Wie erreicht man eine Zeichensatz-Synchronisation?
Tülay
- sonstiges
Ich habe eine mysql-Datenbank mit chinesischen Zeichen (utf8) angelegt und gebe diese über eine php-Datei im Browser (utf8) aus und kann sie dort auch editieren.
Meine Konfiguration: Windows XP Home SP2, mysql 5.0.18, phpmyadmin 2.8.0.3, PHP 5.0.4, Apache 2.0.54
Zur Eingabe der chinesischen Zeichen nutze ich (die in XP eingebaute) Microsoft Global IME mit Simplified Chinese (VR).
Folgendes "kleine" Problem stellt sich mir noch immer (trotz google+):
Gebe ich die Daten direkt über phpmyadmin ein, werden die chinesichen Zeichen in der Datenbank lesbar dargestellt, aber in meiner selbstgeschriebenen php-Anwendung nur als "??" ausgegeben.
Umgekehrt passiert dasselbe: Meine Anwendung schreibt lesbare Zeichen und gibt sie auch lesbar wieder aus. In phpmyadmin dagegen entsteht Zeichensalat (z.B. han4yu3 = "汉è¯")
Vielleicht hilft auch folgende weitere Ungereimtheit zur Lokalisierung der Fehlerquelle:
Wenn ich die Daten über mein eigenes Formular in die Datenbank eingebe, dann werden die einzelnen Zeichen in meiner Anwendung willkürlich in SimHei oder SimSun (bzw. PMingLiu) dargestellt, wobei die einmal zugeteilte Schriftart für das jeweilige Zeichen auch in der Ausgabe erhalten bleibt. Natürlich ist mir das absolut nicht recht, da ich sie gern einheitlich ausgeben möchte, und am liebsten nicht in SimHei! ... :o)
Eine Schriftfestlegung per CSS hat leider gar nichts bewirkt.
Gibt es da eine Besonderheit, die ich übersehen habe?
Mir ist bekannt, dass die Darstellung im Browser letzlich auch von der Konfiguration des jeweils betrachtenden Rechners abhängt. Doch wenn ich das Darstellungsproblem auf meinem eigenen Rechner noch nicht optimal lösen kann, kann ich auch keine verlässliche Konfigurationsanweisung für die Betrachter mitliefern.
Hat jemand ein ähnliches Problem bereits gehabt oder gar gelöst?
Danke im Voraus!
Gruß,
Tülay
echo $begrüßung;
Gebe ich die Daten direkt über phpmyadmin ein, werden die chinesichen Zeichen in der Datenbank lesbar dargestellt, aber in meiner selbstgeschriebenen php-Anwendung nur als "??" ausgegeben.
Der übliche Fehler ist das Fehlen einer Kodierungsangabe auf der Verbindung. Wenn dann noch beide Systeme von unterschiedlichen Kodierungen ausgehen, kommt es zu solchen Effekten. Ein SET NAMES utf8 direkt nach dem Verbindungsaufbau schafft für beide Seiten Klarheit. Der phpMyAdmin macht das, weswegen bei ihm alles richtig läuft.
echo "$verabschiedung $name";
echo $begrüßung;
[...]
Der übliche Fehler[...]
[...]
echo "$verabschiedung $name";
Klasse! ... :o))
Thx :x