Kategorien
Linux

mysql, php und die Umlaute

Folgendes Problem: auf einem älteren Rechner ist SuSE Linux 9.1 installiert und die ganzen Tabellen mit „CHARSET=latin1“ angelegt worden (bei SuSE 9.1 default) – der Zugriff erfolgt aber meist über ein PHP Script von einem aktuellen Ubuntu System welches UTF-8 verwendet. Die Ausgabe des PHP Scripts enthält aber leider statt der Umlaute einfach immer nur ein schwarzes kästchen mit einem „?“ drinnen…

Mein erster Gedanke war einfach mal die MySQL Version am SuSE Rechner aktualisieren, also gleich mal Update auf 5.0.21 drauf gespielt! Hat aber leider nicht wirklich was bewirkt.

Den Zusammenhang mit dem CHARSET habe ich leider erst nach etwas Internet-Recherche herausgefunden – eine Möglichkeit wäre jetzt einen Dump der Tabelle anlegen und dann von latin1 nach utf-8 konvertieren, anschliessend müsste man das ganze einfach wieder in die Datenbank einspielen. Das erschien mir allerdings ein wenig zu umständlich!

Nach längerer Suche bin ich dann auf folgende recht einfach Lösung gestossen:

Einfach nach dem die Verbindung zur Datenbank hergestellt wurde folgenden Befehl absetzen:
mysql_query(„SET NAMES utf8“);

Und schon bringen alle weiteren Selects die Umlaute passend retour!

und immer wieder das alte Sprachproblem mit Squirrelmail

Eigentlich müsste ich das ganze ja schon im Schlaf beten können, aber jedes Mal wieder trifft mich das gleiche Problem: Squirrelmail bietet mir nach der Installation zwar massenweise Sprachen zum Auswählen an, funktionieren tut aber leider nur die eine – Englisch…

Und jedes Mal begebe ich mich auf die Suche nach der Lösung die dann wie folgt lautet:

In der Datei:
/var/lib/locales/supported.d/local

für z.B. deutsch folgende Zeile hinzufügen:
de_DE.ISO-8859-1 ISO-8859-1

und anschliessend
sudo dpkg-reconfigure locales
starten (sudo ist bei debian/ubuntu/kubuntu und co nötig, bei den anderen sollte man als root angemeldet sein).

zum krönenden Abschluss dann noch den Apache Webserver neu starten und dann funktioniert es auch mit der deutschen Sprache…

Für weitere Sprachen geht man einfach nach dem selben Schema vor und fügt in der Datei /var/lib/locales/supported.d/local entsprechende Zeilen dazu.

05.02.2007 – kleine Anmerkung im Verzeichnis /var/lib/locales/supported.d/ kann auch eine Datei für jede Sprache angelegt sein z.b. „de“ und „en“ in denen man dann die entsprechenden Änderungen vornehmen muss!