phpbar.de logo

Mailinglisten-Archive

[php] Re: Zeichencodierung Russisch

[php] Re: Zeichencodierung Russisch

Lutz Zetzsche php-liste at vonnies.de
Mit Jan 21 10:40:56 CET 2004


Hi Jens,

ich habe gerade einmal einen Test gemacht und kyrillische Zeichen aus der
Excel-Tabelle, die Du mir und Norbert freundlicherweise per PM zugaenglich
gemacht hast, in ein textarea-Feld eines eMail-Formulars kopiert und dann das
Formular abgeschickt.

Dabei hat sich mein Verdacht von heute Morgen erhaertet: Der Internet Explorer
und Mozilla, also die Browser, haben die kyrillischen Zeichen in UTF-8-Entities
umgewandelt. Beim Opera kamen hingegen auf der Sendebestaetigungsseite keine
Entities, sondern nur Fragezeichen an.

D.h. damit waere aus meiner Sicht schon einmal eingegrenzt, wo die Entities her
kommen. Es scheint also nicht an phpMyAdmin zu liegen und eigene Formulare zu
bauen, wuerde das Problem wohl ebenfalls nicht loesen.

Die Frage ist nun, WANN die beiden genannten Browser die kyrillischen Zeichen in
UTF-8-Entities umwandeln. Tun sie das bereits beim Einfuegen der Zeichen in das
Formularfeld, oder tun sie das erst beim Abschicken? Das koennte ich allerdings
erst heute Abend feststellen. Bei ersterem haetten wir u.U. leider schlechte
Karten, das Problem zu loesen.

Meine Vermutung ist, dass sie es erst beim Abschicken tun. Hintergrund meiner
Ueberlegung: Wenn Du einen Text aus Excel kopierst und in der Zwischenablage
hast, muss der Zeichensatz nicht unbedingt UTF-8 sein. Zum Text koennte in der
Zwischenablage aber noch der urspruengliche Zeichensatz, z.B. iso-8859-5,
abgelegt sein. Diese Information koennte auch noch beim Einfuegen ins Textfeld
vorhanden sein. Wenn also die Umwandlung erst beim Abschicken erfolgt, koennte
dies daran liegen, dass der Zeichensatz des Textes mit dem Zeichensatz der
Seite, in der das Formular ist und mit dem Zeichensatz in der verarbeitenden
und ausgebenden Seite nicht uebereinstimmt, z.B. weil er iso-8859-1 ist.

Damit komme ich dann doch noch einmal auf meine Mail von gestern zurueck, die
sich auf falsche Zeichensatz-Angaben bezog, obwohl ich spaeter dachte, die
waere aufgrund eines Missverstaendnisses voellig am Thema vorbei. Ansatzpunkte
sind hier wie gesagt: Meta-Tag, PHP-Header, Server- und Browser-Einstellungen.

Allerdings koennte man auch genau anders herum vermuten: Wenn der Text in ein
Formularfeld einer Seite eingefuegt wird, deren kyrillischer Zeichensatz nicht
mit dem des einzufuegenden Textes uebereinstimmt, wandelt der Browser die
Zeichen bereits beim Einfuegen ins Formularfeld um.

Welche Vermutung zutrifft, ist u.U. sogar browserabhaengig! Opera handhabt das
Ganze ja auch anders, als die anderen beiden...

Ein weiterer interessanter Ansatzpunkt: Du erwaehntest ja, dass Du korrekt
UTF-8-Zeichen siehst (und zurueckschreibst?), wenn Du Dir die Daten mit
phpMyAdmin direkt aus der Datenbank holst, die Daten also nicht ueber Kopieren
und Einfuegen in das Formularfeld gelangen.

D.h. aus den obigen Vermutungen und Beobachtungen laesst sich eine Versuchsreihe
bauen, mit der Du eingrenzen kannst, wo das Problem tatsaechlich liegt. Hier
kann auch Javascript helfen, um z.B. den Inhalt des Formularfelds nach dem
Einfuegen auszulesen (ohne zu versenden). Vielleicht kann man das Problem dann
sogar am Ende nicht nur lokalisieren, sondern auch loesen. Da mache ich mit
heute Abend einmal dran, wenn mir keiner zuvor kommt. :-)

So, das war jetzt eine Menge Information, aber ich hoffe, sie ist erstens
verstaendlich, ist zweitens nicht an Deiner Intention vorbei und hilft drittens
weiter. ;-)


Viele Gruesse

Lutz

php::bar PHP Wiki   -   Listenarchive