Häufig stand ich selbst vor dem Problem: ich hatte eine mehrsprachige Webseite auszuliefern. Also sollte das encoding meiner Wahl UTF-8 sein. Die Anwendung desselben gestaltet sich aber relativ schwierig.
Zunächst einmal habe ich nach eigenem Gutdünken per meta-Tag
angegeben, außerdem als PHP-header
header("Content-Type: text/html; charset=utf-8");
gleich zu Scriptbeginn herausgeblökt.
Sehr wichtig ist außerdem, sämtliche Quelltextdateien in UTF-8 zu halten, zumindest den, der direkt mit Output zu tun hat (und damit kein Chaos entsteht, eben einfach alle Projektdateien und-gut).
Und dann kam die Datenbank… auf sehr vielen Seiten habe ich Tips erhalten, man solle gleich nach dem Herstellen der Serververbindung
SET NAMES utf8;
oder/und
SET CHARACTER SET utf8;
absetzen, aber das hat bei mir nicht geholfen: Output aus der Datenbank, die natürlich auch als UTF-8 encoded ist, kam immer “verkurbelt” an. Ich habe mir soweit damit beholfen, dass ich jedweden Datenbank-Output über meine Wrapper-Klasse mit utf8_encode vercodiert habe. DAS hat dann funktioniert…
Ich habe nun mittlerweile noch zwei weitere Queries gefunden, die man absetzen könnte, nämlich (insgesamt)
SET CHARACTER SET utf8;
SET NAMES utf8;
SET SESSION character_set_server = utf8;
SET character_set_connection = utf8;
Ob das funktioniert konnte ich nicht testen, da das Projekt schon abgegeben ist.
Es gibt da noch einen interessanten PHP-Befehl “mysql_client_encoding()”, der angeblich den aktuellen Encoding-Status ausgibt. Laut User-Contributed-Notes auf der entsprechenden php.net-Dokuseite ist dieser Befehl aber nur wenig zuverlässig.
Wenn jemand noch Ideen oder Erfahrungen hat, bitte posten
Tags: encoding, mysql, utf-8, utf8
Keine Kommentare »