Alexander (HH): Umlautproblem in MySQL

Beitrag lesen

Moin Moin!

An der einen oder anderen Schnittstelle bringen die beteiligen Anwendungen Bytes und Characters durcheinander. In ASCII, ISO-8859-x und ähnlichen Zeichensätzen gilt immer Byte==Character, bei UTF-8 kann ein Character aber bis zu 5 Bytes belegen. Deutsche Umlaute belegen in UTF-8 zufällig alle 2 Bytes, die bei falscher Kodierung eben die kruden Zeichen ("ü") darstellen.

Das Gemeine ist, dass diese kruden Zeichen einen Round-Trip überleben können, d.h. Du gibst "ü" ein, speicherst in der DB "ü", und bei der Ausgabe mit dem passenden HTML-Charset zeigt der Browser das wieder als "ü" an. Wenn Dein Editor dann auch noch mit Unicode Probleme hat, bist Du echt gekniffen.

Wenn in Deiner Datenbank ein "ü" nicht als "ü" ankommt, ist definitiv etwas faul. Entweder verdaust Du die Formular-Parameter nicht richtig (behandelst sie also als Bytes und nicht als Unicode-Strings) oder Du hast ein Schnittstellenproblem bei der Datenbank. (DB-Schnittstelle nicht Unicode-fähig?) Ersteres kannst Du durch ein Zurücksenden an den Browser ohne den Umweg über die Datenbank überprüfen, z.B. in dem Du Dir Zeichen für Zeichen den Zeichencode (65, 66, 67 für "ABC") ausgeben läßt. Umgekehrt muß auch die Aneinanderreihung von Zeichen aus Zeichencodes ("ABC" aus 65, 66, 67) im Browser perfekt funktionieren. Wenn Du zwischen Script und Browser alles geklärt hast, kannst Du Dir auf ähnliche Art die DB-Schnittstelle vornehmen.

Alexander