Leidiges Thema Sonderzeichen mit php und mysql

frogger

Aktives Mitglied
Thread Starter
Dabei seit
05.11.2006
Beiträge
290
Reaktionspunkte
16
Hi!

Ich habe eine kleine PHP-Anwendung geschrieben:
In einem Form-Tag wird das Suchwort abgefragt und per Post an die Datei suche.php übergeben und dort in einer Variable gespeichert.
Mit dieser Variable wird nun die MySQL-Abfrage gemacht und mit echo ausgegeben.

Klappt alles super, bis auf die ö, ä und ü. Die werden bei der Ausgabe umgewandelt und kommen so raus:
St�ck anstatt Stück

So klappt auch die Suche nach dem Wort Stück nicht. Es kommt eine leere Abfrage zurück.

Im Header beider PHP-Dateien steht:
Code:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Die Tabelle und auch die beiden Spalten sind utf8_general_ci

In der Datenbank sind die Sonderzeichen richtig abgespeichert.

Die beiden php-Dateien wurden unter Windows mit Notepad++ geschrieben und sind auch als utf-8 abgespeichert.

Wo kann hier der Fehler liegen? Ich bin Ratlos.
 
Ist "Stück" ein Wert, der aus der Datenbank kommt?

Dann könnte ein

Code:
mysql_query("SET NAMES 'utf8'");

vor dem Such-Query helfen.

Ansonsten ist es eventuell noch hilfreich auch einen Charset-HTTP-Header mitzuschicken:

Code:
header('Content-type: text/html; charset=utf-8');
 
Ich habe beides in die Suche.php eingebaut, leider ohne Erfolg.

Das Wort Stück ist genau so in der Datenbank abgespeichert. Die Suche nach dem Wort Stück liefert so leider kein Ergebnis zurück.

Ich weiss nicht mehr weiter...
 
Datenbank Collation, PHP Datei und PHP Quellcode sollten UTF-8 formatiert sein. Dann passieren solche Dinge nicht. Was du testen kannst, in PHP mit utf8_encode() bzw. utf8_decode() die Werte aus der DB manipulieren und schauen wann das richtige rauskommt.
 
Ich würde mal darauf tippen, das der Browser beim Suchen den Suchstring nicht als UTF8 sendet. Hast du denn das form für UTF8 konfiguriert?
 
Das Form nicht.
Kannst Du mir kurz auf die Sprünge helfen, wie ich das festlege?
 
_enIm Regelfall sollte deine DB Einstellung keinen Einfluss auf die Suche haben, da wie du ja selbst festgestellt hast, die Wörter auch so in der Tabelle stehen.
Pack die Suchworte mal in utf8_encode. Die Ausgabe natürlich auch.
 
Das form entsprechend utf-8 anzupassen, hat leider auch nichts gebracht.
Ich habe nun utf8_encode eingesetzt nachdem ich per post die Eingabe abgeholt habe:
Code:
$wwsuche = $_POST["wwsuche"];
$wwsuche = utf_encode($wwsuche);

Bei der Ausgabe dann entsprechend so:
Code:
$ergebnis0 = mysql_query($abfrage0);
while($row0 = mysql_fetch_object($ergebnis0))
   {
$row0->produkt = utf_encode($row0->produkt);

echo "$row0->produkt";
	}

Ist das so richtig? Klappt auf jeden fall so auch nicht...
 
Zurück
Oben Unten