03.04.2007

Welcome to Babylon (MySQL, PHP und UTF-8)

Die Osterfeiertage nähern sich mit großen Schritten und die Firma ist nur noch spärlich besetzt. Auch unser Haus- und Hof-Administrator Olaf hat sich nach einem erfolgreichen Datenbankupdate in die wohlverdienten Osterferien abgesetzt. Nur leider stellte sich heute heraus, dass das Update doch nicht so glatt lief und die Ferien doch nicht so wohlverdient waren. Was war passiert?

Nun, unter anderem läuft auf dem DB-Server eine kleine aber feine Klientendatenbank, und unsere russischen Kontakte waren nur noch als Fragezeichen erkennbar. Und wen ruft der Chef an? Klar, meine Wenigkeit! "Geh mal zum Olaf ins Zimmer, der hat das Zeugs alles dokumentiert. Sieh mal zu, wo man da was drehen muß!".
Olaf ist sehr ordentlich, und so habe ich Benutzername und Passwort für den Server und die Datenbank schnell gefunden. Tja, in phpMyAdmin sieht die Sache sauber aus, und ich kann dem Chef die Adresse der Frau Irina Ivanowa raussuchen. Aber er ist nicht zufrieden: "Ich will das hier auf meinem Bildschirm wiederhaben!". Gut, und so war heute meine Aufgabe, herauszufinden, wie man Kyrillische Buchstaben aus einer MySQL-Datenbank sauber via PHP in einem Webbrowser bekommt. Hier die Lösung:

a) Die MySQL-Datenbank muß komplett in UTF8-Unicode laufen. Das gilt für die Tabellen wie auch die Verbindung. Also alles auf Kollation = utf8_unicode_ci stellen. Das hat Olaf alles schon gemacht.

b) Das php-File mit der Abfrage der DB muß ganz am Anfang mit der Zeile
header("Content-Type: txt/html; charset=UTF-8");
präpariert sein - auch das hatte Olaf erledigt - in einem extra Include, dass den gemeinsamen Kopf aller php-Seiten bildet.

c) In der HTML-Ausgabe, die an den Browser geht, ist der Metatag
<meta http-equiv="content-type" 
content="text/html; charset=UTF-8">
erforderlich. Hatte Olaf auch so gemacht.

Nach langem Suchen fand ich dann noch den Hinweis, dass man gleich nach dem
$dbcn = mysql_connect([server], [user], [password]);
noch ein
mysql_query("SET NAMES 'utf8'");
einschieben sollte - und dass fehlte bei Olafs Dateien noch.

Ich hoffe, er verzeiht mir, dass ich es (nach einer Sicherung seiner Originaldateien) nachgetragen habe - jetzt geht auch die Adressabfrage wieder wie gewünscht.

Gefunden hab ich die Lösung hier unter phpforum.de.

Trackbacks

Bitte nutze die URL http://www.ianchrist.de/XE3system/tb.php?id=21 falls Du einen Trackback zu diesem Eintrag senden willst.

Kommentare RSS


(Hinweis: Alles ohne das Wort "Heidschnucke" wird als Spam gewertet!)









[<< Neuere Einträge] [ Ältere Einträge >>]