Erik P. Roderwald schrieb:
Hallo zusammen,
vielleicht kennt hier jemand das Problem:
Bisher lief ein Webserver unter Suse 9.3 mit PHP 4.3 und MySQL 5.1. Jetzt habe ich Suse 11.1 mit PHP 5.2.12 (mit suhosin) und MySQL 5.1.
Die Datenbank wird via PHP-Skript auf der Konsole täglich aktualisiert. Auf dem alten Server lief alles problemlos. Das Skript ruft eine XML-Datei auf, die mit ISO 8859-1 kodiert ist. Das ist sicher. Ich habe den Stream ausgelesen. Es steht Iso 8859-1 drüber und es ist auch ISO 8859-1 drin. Ebenso behauptet PHP, dass es mit dem Server diese Kodierung ausgehandelt hat. Frage ich das am Ende des Skripts ab, dann steht da latin1.
Der Server ist folgendermaßen konfiguriert:
[mysqld] ... set-variable=character-set-server=latin1 init-connect='SET NAMES latin1' skip-character-set-client-handshake ...
In der zuständigen php.ini steht:
... default_mimetype = "text/html" default_charset = "iso-8859-1" ...
Im Skript selbst steht:
... $db->query("SET NAMES 'latin1'"); $db->query("SET CHARACTER SET 'latin1'"); ...
Das macht dasselbe wie mysql_query.
Versuchsweise habe ich serverweit UTF-8 abgeschaltet (via Yast).
Trotz alledem kommen in der DB kaputte Umlaute an. Ich werfe also oben ISO 8859-1 rein und unten kommt es auch raus. Aber irgendwo unterwegs wird das in UTF-8 konvertiert. Mir sind jetzt die Ideen ausgegangen, woran das liegen könnte. Das Skript selbst tut nichts anderes, als die XML-kodierten Datensätze auszulesen, der Datenstruktur entsprechend auseinander zu pflücken und einzeln in die DB zu schreiben. Typenkonvertierung findet nicht statt. Hat noch jemand eine Idee, die ich noch nicht ergoogelt habe?
Liebe Grüße
Erik
Hi, mit mysql kenne ich mich nicht aus. Aber bei postgreSQL legst Du das charset einer DB bei der Anlage fest und ich glaube nicht, dass man das für die DB nochmal ändern kann. Wenn das bei mysql genauso ist, musst Du wohl für explizite Konvertierung sorgen... Wenn Du bei der DB-Anlage keine Angabe machst, wird heute sicher utf-8 genommen (hat mit den Servereinstellungen nix zu tun), früher war das sicher latin1. cu jth -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org