Vreemde tekens in zoekresultaat zoekfunctie

Status
Niet open voor verdere reacties.

Thomasje

Gebruiker
Lid geworden
12 mei 2007
Berichten
337
Ik heb op www.verbodengeschriften.nl een zoekfunctie gemaakt met Search Enzine Composer. In de zoekresultaten pagina komen soms vreemde tekens voor. Blijkbaar is ergens niet de juiste charset ingegeven. In Search Enzine Composer heb ik charset windows-1252 ingegeven, ook in de betreffende PHP-bestanden. Dit is dezelfde charset als in de pagina's die in het zoekresultaat wordt weergegeven, maar in die pagina's komen die vreemde tekens niet voor. Hoe vermijd ik de vreemde tekens uit de zoekresultaten?

P.S. Op de website van de maker vind ik niets hierover.
 
Laatst bewerkt:
Wat voor tekens gaat het om?
Welke verwacht je, en welke krijg je?
 
Ik raad je aan om over te stappen op UTF-8. Ik heb een vermoeden dat er UTF-8 tekens gebruikt worden terwijl je dus de ANSI-set gebruikt. Of zorgt met htmlentities() ervoor dat ze HTML-entities worden.

Ikzelf raad aan om over te stappen op UTF-8. Zorgt ervoor dat je bestanden ook de UTF-8 encoding hebben, je een UTF-8 header in PHP meelevert, de charset in HTML op UTF-8 zet, en de database op UTF-8 zet tezaam met de connectie.
 
Bij Search Enzine Composer moet ik een charset opgeven. Vervolgens genereert het programma enkele php-bestanden (en een database) en in die bestanden zie ik dan die charset staan. Ik heb zowel windows-1252 als utf-8 geprobeerd en het geeft allebei verkeerde tekens. Het onderste plaatje is een stukje van de door de zoekfunctie gevonden webpagina en die pagina heeft charset windows-1252.
 
Laatst bewerkt:
Zorg er daarom voor dat al je charactersets op de genoemde plekken consistent zijn. Eén afwijking en je krijgt dergelijke problemen.
 
Ik ben een paar dagen van de straat geweest door te onderzoeken hoe het kan worden voorkomen dat er op de zoekresultaten-pagina's op diverse plaatsen tekens niet goed worden weergegeven:

schermafbeelding1.jpg

Het zijn maar schoonheidsfoutjes, maar toch. Ik heb navraag gedaan bij de provider, van alles geprobeerd en ten slotte andere zoekmachine software gekocht (Zoom Search Engine). Omdat ik beide zoekmachines (Zoom Search Engine en Search Enzine Composer) op de website heb geïnstalleerd kon ik ze goed vergelijken. Ik heb uitgebreid geexperimenteerd, o.a. met de charsets.

Oude zoekmachine: www.verbodengeschriften.nl#zoekfunctie
Nieuwe zoekmachine (voorlopig niet ingebed in de website): www.verbodengeschriften.nl/zoom/search.php

Conclusie:
De oude zoekmachine geeft op de zoekresultatenpagina's het op de website weinig voorkomende Griekse en Cyrillische schrift niet goed weer, maar meestal wel de vaak voorkomende trema's, apostrofs, enkele en dubbele aanhalingstekens. De nieuwe zoekmachine geeft het Grieks en Cyrillisch goed weer, maar trema's, apostrofs, enkele en dubbele aanhalingstekens vaak niet. De nieuwe functioneert wel een beetje anders en het programma zelf heeft meer mogelijkheden. Ik geef de voorkeur aan de oude zoekmachine.
 
Laatst bewerkt:
ik denk dat ik volledig genoeg ben geweest
PHP:
<?php
    $x = "te controleren tekst";
   PRINT $x;
    print "de:".utf8_decode($x)."<br>";
    print "de de:".utf8_decode(utf8_decode($x))."<br>";

    print "de en:".utf8_encode(utf8_decode($x))."<br>";
    print "en de:".utf8_encode(utf8_decode($x))."<br>";
    
    print "en:".utf8_ENCODE($x)."<br>";
    print "en en:".utf8_ENCODE(utf8_ENCODE($x))."<br>";
    print "en en en:".utf8_ENCODE(utf8_ENCODE(utf8_ENCODE($x)))."<br>";
    print "en en en en:".utf8_ENCODE(utf8_ENCODE(utf8_ENCODE(utf8_ENCODE($x))))."<br>";
    
    print "Detection". mb_detect_encoding($x)."<br>";
    print mb_convert_encoding($x, "utf-8", "auto")."<br>";
    print mb_convert_encoding($x, "utf-16", "auto")."<br>";
    $codes = array("UCS-4","UCS-4BE","UCS-4LE","UCS-2","UCS-2BE","UCS-2LE",
    "UTF-32","UTF-32BE","UTF-32LE","UTF-16","UTF-16BE","UTF-16LE","UTF-7","UTF7-IMAP","UTF-8",
    "ASCII","EUC-JP","SJIS","eucJP-win","SJIS-win","ISO-2022-JP","ISO-2022-JP-MS",
    "CP932","CP51932","SJIS-mac","SJIS-Mobile","SJIS-Mobile","SJIS-Mobile",
    "UTF-8-Mobile","UTF-8-Mobile","UTF-8-Mobile","UTF-8-Mobile","ISO-2022-JP-MOBILE","JIS","JIS-ms",
    "CP50220","CP50220raw","CP50221","CP50222","ISO-8859-1","ISO-8859-2","ISO-8859-3","ISO-8859-4",
    "ISO-8859-5","ISO-8859-6","ISO-8859-7","ISO-8859-8","ISO-8859-9","ISO-8859-10","ISO-8859-13","ISO-8859-14","ISO-8859-15",
    "byte2be","byte2le","byte4be","byte4le","BASE64","HTML-ENTITIES","7bit","8bit","EUC-CN","CP936","GB18030","HZ","EUC-TW",
    "CP950","BIG-5","EUC-KR","UHC (CP949)","ISO-2022-KR","Windows-1251","Windows-1252","CP866","KOI8-R","EBCDIC","ASCII","cp037");
    foreach($codes as $code){
       print "ENCODING[". $code."]-: ". @mb_convert_encoding($x, "utf-8", $code)."<br><br>";
       //print "ENCODING[". $code."]-: ". @mb_convert_encoding($x, "utf-8", $code)."<br>";
       print "ENCODING[". $code."]-: ". @iconv($code, 'UTF-8', $x);
    }
    print "xcx deCODING". $code.": ".  mb_decode_mimeheader($x)."<br>";
?>
 
tja ik had te weinig uitleg geschreven omdat mijn taal niet zo goed is ik lees sneller code dan tekst

je ziet:
$x = "te controleren tekst";
dus hier zal je een deel van de tekst in stoppen via copy paste of vanuit uw code en zo printen hierdoor zal je zien welke coding er gebruikt is
heb ik ooit eens geschreven om te testen op tekst als je niet weet welke coding er is gebruikt sommige sites hebben bvb gezegt in hun header dat zij utf8 zijn en dat is dan ooit verandert en hierdoor is een fout ontstaan bvb en om dat uit te zoeken heb ik dit gemaakt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan