Tipps & Tricks
Hilfestellungen rund um die Themen Internet & Programmierung
WAMP-Tutorial, Teil 9, Ergänzungen: UTF8 als Standardkodierung festlegen
Sie können nun noch einige optionale Einstellungen vornehmen, damit die Arbeit mit Ihrem WAMP noch komfortabler wird.
Konfigurieren Sie Ihr WAMP so, dass UTF8 als Standardkodierung genutzt wird
Wahrscheinlich haben Sie es auch schon einmal erlebt, das mittels PHP in Ihre Datenbank eingetragene Daten anstatt den gewünschten Umlauten und anderen Sonderzeichen nur Fragezeichen, Quadrate oder anderen "Zeichensalat" enthalten.
Es gibt sicher verschiedene Mittel und Wege, dieses Problem zu lösen. PHP hält viele Funktionen zum (De-)Kodieren von Sonderzeichen bereit und die eine oder andere Funktion liefert meistens das gewünschte Ergebnis. Jedoch: sobald Sie es mit chinesischen, hebräischen, arabischen etc. Schriftzeichen zu tun bekommen, reicht der Standard ISO-8859-1 Latin-Zeichensatz nicht mehr aus. Auch bei der Übermittlung von "normalen" deutschsprachigen Strings mittels AJAX (JavaScript) kann es durchaus zu Problemen kommen. Die Lösung lautet: UTF8.
Zunächst müssen Sie Ihrer Datenbank beibringen, dass Sie nur noch über UTF8 kommunizieren soll. Dazu öffnen Sie die Datei "my.ini", die Sie in Ihrem MySQL-Ordner finden, bei mir also unter dem Pfad "C:\WAMP\MySQL\my.ini". Dort finden Sie, recht weit oben in der Datei und nah beieinander stehend, zweimal die identische Zeile:
default-character-set=latin1
Ändern Sie hier in beiden(!) Zeilen den Wert in "utf8":
default-character-set=utf8
Starten Sie nun Ihren Rechner neu. Sie können auch den MySQL-Dienst in der XP-Systemverwaltung und danach den Apache neu starten, wenn Sie sich damit auskennen.
Der richtige Header sorgt dafür, dass die Daten wie beabsichtigt ankommen
Ab sofort müssen Sie darauf achten, dass Ihre Scripte und Dateien ebenfalls mit UTF8 kodiert sind und dass auch die Internetbrowser Ihrer Besucher dies erfahren. Jede Programmiersprache hat hier eine andere Methode, das mitzuteilen.
Dieses Meta-Tag setzen Sie ab sofort ganz oben in den Head Ihrer HTML-Dateien:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Diesen Header geben Sie in Ihren PHP-Scripten aus:
header('Content-Type: text/html; charset=utf-8');
Wenn Sie dynamische XML-Dateien mit PHP generieren, z.B. als Rückgabe eines AJAX Aufrufes, muss diese Zeile natürlich anders lauten:
header('Content-Type: text/xml; charset=utf-8');
Und so sieht die erste Zeile Ihrer XML-Dateien aus:
<?xml version="1.0" encoding="UTF-8" ?>;
Bitte beachten Sie, dass diese Umstellungen natürlich Auswirkungen auf bereits vorhandene Daten haben können. Eventuell müssen Sie betroffene Daten nochmals nachpflegen. Manche professionellen Tools wie z.B. Dreamweaver oder Ultra Edit bieten Ihnen gute Möglichkeiten, zumindest Ihre Scripte automatisch zu konvertieren.
Noch ein Tipp: Wenn Sie die Standardeinstellung in der "my.ini" lieber nicht ändern möchten, oder auf die "my.ini" keinen Zugriff haben, können Sie in PHP den folgenden Code nutzen, um eine temporäre UTF8-Verbindung zu MySQL herzustellen:
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
