Sven Rautenberg: kyrillisch im textfeld......UTF-8 ?

Beitrag lesen

Moin!

Das PHP Script gibt auch brav den kyrillischen Text aus. Aber:
Schau ich mir den Quelltext an, finde ich dort Codierte kyrillische zeichen, etwa &#1072 etc.. Und das für JEDES Zeichen!
Ich möchte aber im Quelltext echte russische Zeichen stehen haben. (wie beispielsweise auf google.ru)

UTF-8 ist tatsächlich eine mögliche Lösung für dein Problem.

Warum du die ganzen Entities siehst, ist im verwendeten Browser begründet - und das ist _eigentlich_ auch ein Bug des Browsers.

Im HTTP-Header deines Formulars und im HTML-Kopf (Meta-Angabe) kann stehen, welchen Zeichensatz diese Seite verwendet. Dort muß UTF-8 drinstehen - und alle Zeichen müssen dann natürlich UTF-8-codiert sein.

Außerdem gibt es für <form> noch das Attribut "accept-charset", welches du ebenfalls auf "utf-8" setzen solltest. Erst dann kannst du mit einiger Sicherheit davon ausgehen, dass die Mehrheit der Browser dir tatsächlich UTF-8-codierte Texte schickt.

Setzt du nicht alle diese Möglichkeiten auf UTF-8, dann sucht sich der Browser unter Umständen eine eigene Zeichencodierung wie ISO-8859-1 raus und schickt damit. Dann gibts für russische Zeichen zwei Möglichkeiten:
1. Sie werden in "Fragezeichen" umgewandelt, und zwar echte ASCII-Fragezeichen. Sie sind somit unwiederruflich verloren. Der Grund ist, dass das russische Zeichen nicht in der gewählten Zeichencodierung codiert werden konnte. Diese Verhaltensweise ist die begrüßenswerteste, weil sie die ehrlichste ist. Uncodierbare Zeichen können nun einmal nicht doch irgendwie codiert werden.

2. Alternativ setzt der Browser die uncodierbaren Zeichen in numerische Entities um. Diese Methode hilft aber nur scheinbar, denn man kann serverseitig keinerlei Unterscheidung mehr treffen, ob der Benutzer jetzt tatsächlich einen russischen (oder chinesischen, japanischen,...) Buchstaben eingegeben hat, oder ob er die numerische Entity eingetippt hat. Das ist schlecht.

Doch was muss ich dafür tun? Den Charset habe ich bereits auf UTF-8 umgestellt, hat aber nix geholfen.

Wie gesagt: Du hast drei Orte, an denen du auf UTF-8 umstellen mußt. Der HTML-Head ist dabei der unwichtigste, weil unwirksamste von allen.

- Sven Rautenberg