Sven Rautenberg: Griechisch und Unicode / Einen hab ich noch ...

Beitrag lesen

Moin!

vor einigen Tagen las ich auf der mysql home, dass UTF-8 erst ab der Version 4.1 unterstützt wird.

Wenn ich nun aber Griechisch aus einer Word Datei kopiere und dieses in  phpmyadmin einfüge, wird dieses konvertiert und in hex Zeichen abgespeichert.

Definiere "Hex-Zeichen"?

UTF-8 ist eine Codierung, die durchaus ASCII-kompatibel ist. Du kannst also im Prinzip ohne Probleme UTF-8-Strings in die Datenbank tun und auch wieder herauslesen. Knackpunkte sind ein paar Details.

Ein VARCHAR(10) für maximal 10 Zeichen nimmt beispielsweise 10 normale ASCII-Zeichen auf - wenn UTF-8-codierte Umlaute auftauchen, passen davon aber nur 5 hinein, da jeder Umlaut aus 2 Zeichen besteht. MySQL 4.1 hingegen berücksichtigt diese Problematik und legt das Feld im Zweifel etwas länger an.Wenn du aber (was sinnvoll erscheint) TEXT oder BLOB als Spaltentyp für deinen Text nutzt, stört das relativ wenig.

Bleibt das Problem der HEX-Zeichen. Das liegt eindeutig an der Schnittstelle zur Datenbank.

Die einzelnen Browser verhalten sich leider höchst ekelhaft, wenn das Formular nicht mit 'accept-charset="utf-8"' arbeitet. Idealerweise sollte schon die Formularseite als UTF-8 ausgeliefert werden. Wenn das Formular mit den Texten als ISO-8859-1 verschickt wird, gibts Chaos. Einige Browser wandeln nicht codierbare Zeichen (bei dir also alles griechische) in Fragezeichen um und schicken den Text dann so. Andere Browser wandeln diese Zeichen in numerische Entities um (Ӓ), codieren eingegebene &-Zeichen aber nicht als & - man kann also nicht mehr ermitteln, ob der Benutzer ein Sonderzeichen eingab, oder in seinem Text die Entity ausgeben wollte.

- Sven Rautenberg