Sven Rautenberg: Unicode Zeichen in <option>

Beitrag lesen

Moin!

Danke, jetzt gehts!

Mußt du nur beachten, dass deine Sonderzeichen (alles, was nicht in den unteren 7 Bit des ASCII-Codes enthalten ist) auch in UTF-8 codierst. Dazu zählen beispielsweise die Umlaute, das Euro-Zeichen, und vieles mehr.

Die Lösung an sich ist vom Grundsatz her unnötig. HTML nutzt als zugrundeliegenden Zeichensatz sowieso Unicode, und die Zahlen-Entities &#xHEXZAHL; bzw. &#DEZZAHL; sind absolut erlaubt, um auch bei anderen Zeichencodierungen (ISO-8859-1 beispielsweise) beliebige andere Unicode-Zeichen zu referenzieren.

Wenn der IE so blöd ist, seine Formular-Controls an dem angegebenen Zeichensatz auszurichten und Unicode-Sonderzeichen nicht darzustellen, dann sollte man eigentlich diesen Browser korrigieren.

Wie gesagt: Man erkauft sich die Tatsache, dass die Meta-Angabe UTF-8 das Problem im IE löst, mit der Notwendigkeit, alle Sonderzeichen, die man nicht als Entity schreibt, UTF-8 zu codieren. Mit dem richtigen Editor sicher kein Problem.

Das Problem kommt aber dann, wenn es um den Versand von Formulardaten geht. Denn die werden (hoffentlich - die Browser sind sich da oft nicht so einig) auch als UTF-8 verschickt. Das ist grundsätzlich kein Problem, und UFT-8 ist sowieso die beste Lösung, wenn es um die Übermittlung von Formulardaten geht - nur wissen muß man das, weil ansonsten durchaus seltsames Verhalten an den Tag gelegt wird, wenn man serverseitig gewisse Dinge nicht berücksichtigt.

So harmlose Dinge wie "ein Ä wird zu zwei Zeichen - und zählt dann auch als zwei Zeichen" könnten sich zu nervigen "Warum zählt der denn die Textlänge falsch" ausweiten - um nur ein Beispiel zu nennen.

Wer hingegen im String nach einem Einzelzeichen "Ä" sucht, dank UTF-8 aber keines findet, weil das Ä ja zwei Zeichen sind, seine Programmiersprache aber keine zwei Zeichen hintereinander finden kann (oder das anders getan werden muß), wird vermutlich schon eher verzweifeln.

- Sven Rautenberg