dedlfix: Never ending story Sonderzeichen

Beitrag lesen

Tach!

Der Eintrag in die Datenbank erfolgt so:
[code lang=php]$_POST['vorname']=utf8_encode($_POST['vorname']);
Öffne ich phpMyadmin sehe ich anstelle von ü das hier:"ü"

Nicht nur, dass du keine UTF-8-Kodierung benötigst, weil die Daten bereits so vorliegen, scheinst du auch nicht mit MySQL die auf der Verbindung zwischen deinem Client und ihm zu verwendende Kodierung auszuhandeln. Meine Vermutung ist, dass dein MySQL-Server davon ausgeht, Latin1-Daten geschickt zu bekommen.

Der Browser sendet ein UT_8-ü, bestehend aus 2 Byte. Das utf8_encode() macht UTF-8 aus ISO-8859-1, also werden die zwei Byte als zwei Zeichen angesehen und 4 Byte draus gemacht.

Das Datenbankfeld hat als Kollation:utf8_unicode_ci

Diese angeblichen Latin1-Daten kodiert MySQL nun für das Feld nach UTF-8 um. Das ist die zweite Kodierung, die dir dann aus den 4 Byte (entspricht 4 Latin1-Zeichen) 8 Byte. Eine Kontrollausgabe LENGTH() auf das Feld wird also nun 8 ergeben und CHARACTER_LENGTH() das Ergebnis 4.

Der Nutzer soll also diese Sonderzeichen eingeben können und dann natürlich auch beim Auslesen des Feldinhalts genauso angezeigt bekommen.

Schau mal da: SELFHTML-Wiki: Zeichencodierung

dedlfix.