Umlaute in PHP aus MySQL-Datenbank
2006-06-25 00:40:00 by SazIch bin gerade dabei, einige Dinge von einem Server auf einen anderen Server umzuziehen. Von der Konfiguration her ist alles gleich, allerdings hatte ich trotzdem Probleme mit den Umlauten meiner alten Website. Diese sind in einer MySQL-Datenbank in UTF-8 gespeichert. Nachdem ich die Website auf den neuen Server kopiert hatte, beide laufen unter Gentoo, musste ich feststellen, dass ich Probleme mit den Umlauten habe. Da aber beide Server auf den gleichen Datenbankserver zugreifen, war schnell klar, dass das Problem an anderer Stelle zu suchen ist. Es hat mich zwar einige Zeit gekostet, aber ich wurde zu guter letzt doch noch fündig. Gentoo liefert MySQL seit neuestem standardmässig mit dem Zeichensatz UTF-8 aus. Laut diesem Forumsbeitrag greift PHP aus diesem Grund auf die my.cnf zu, um die Standard-Einstellungen für eine MySQL-Verbindung zu suchen. Ist kein Eintrag für PHP vorhanden, verwendet es latin1. Tja, und da haben wir auch schon das Problem: Latin1 ist nicht UTF-8. Folgendes ist die Lösung für dieses Problem: In die my.cnf einfach folgende Zeilen hinzufügen:
`` [php-cli] default-character-set=utf8 [php-cgi-fcgi] default-character-set=utf8 [php-apache2handler] default-character-set=utf8`` Zum überprüfen, ob alles richtig läuft, einfach die gesetzten Variablen von MySQL mit SHOW VARIABLES; aus einem PHP-Skript abfragen.