Webseiten in UTF-8 ausliefern

afoeder am 25. Januar 2008 11:34

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 :)

Kat: PHP, S/W-Entwicklung

Trackback URI | Kommentare als RSS

Einen Kommentar schreiben