Accesskey n springt zur Seitennavigation. Springe zum Inhalt.

Dieses Dokument ist eine Übersetzung. Im Falle von Abweichungen oder Fehlern sollte das aktuelle englische Original als maßgeblich angenommen werden. Das W3C besitzt das Copyright am Original, wie unten beschrieben.

Übersetzer: Gunnar Bittersmann

s_gotoW3cHome Internationalisierung
 

Zeichencodierung bei mehrsprachigen Formularen

Zielgruppe: XHTML/HTML-Autoren (die Web-Editoren/Texteditoren oder Scripte benutzen), Script-Entwickler (PHP, JSP u.a.), Webprojekt-Manager und alle, die Informationen suchen, wie man mit Zeichencodierungen bei mehrsprachigen Formularen umgeht

Frage

Wie bewältigt man am besten Probleme mit der Zeichencodierung bei Formularen, in denen verschiedene Sprachen und Schriften verwendet werden können?

Antwort

Am besten bewältigt man Probleme mit der Zeichencodierung bei (X)HTML-Formularen, indem man alle seine Seiten in UTF-8 ausliefert. UTF-8 kann die Zeichen der allermeisten Sprachen abbilden. Browser schicken Formulardaten in derselben Zeichencodierung zurück, in der auch die Webseite codiert ist, die das Formular enthält. Dann können Nutzer Daten in der Sprache und Schrift eingeben, die sie benötigen.

Damit dies funktioniert, müssen einige Dinge beachtet werden. Zum einen ist es wichtig, dem Browser anzugeben, dass die Formularseite in UTF-8 codiert ist. Es gibt mehrere Arten, dem Browser die Zeichencodierung einer Seite mitzuteilen. Das ist immer wichtig, besonders aber, wenn auf der Seite selbst keine Zeichen außer ASCII-Zeichen vorkommen, die Nutzer aber auch andere Zeichen eingeben könnten.

Zum anderen ist es angebracht, dass das Script, welches die Formulardaten verarbeitet, prüft, ob die empfangenen Daten wirklich UTF-8-codiert sind (falls etwas schiefging, z.B. wenn der Nutzer die Zeichencodierung umgestellt hat). Die Prüfung ist möglich, weil UTF-8 ein spezifisches Bytemuster aufweist, das in keiner anderen Codierung auftritt. Wenn die Daten nicht in UTF-8 ankommen, sollte eine Fehlermeldung zurückgesendet werden.

In Perl würde ein regulärer Ausdruck, der auf UTF-8 prüft, beispielsweise so aussehen:

$field =~
  m/\A(
     [\x09\x0A\x0D\x20-\x7E]            # ASCII
   | [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte
   |  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs
   | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
   |  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates
   |  \xF0[\x90-\xBF][\x80-\xBF]{2}     # planes 1-3
   | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
   |  \xF4[\x80-\x8F][\x80-\xBF]{2}     # plane 16
  )*\z/x;

Der Ausdruck kann an andere Programmiersprachen angepasst werden. Er beachtet verschiedene Probleme wie unerlaubte Bytesequenzen und missbräuchlich verwendete Surrogate (Ersatzzeichen). Er gibt true zurück, wenn $field UTF-8 ist, ansonsten false.

Sagen Sie uns, was Sie denken (auf Englisch).

Abonnieren Sie unseren RSS-Feed.

Neue Ressourcen

News auf der Startseite

Twitter (News auf der Startseite)

‎@webi18n

Literaturhinweise

Autor: Martin Dürst, W3C. Übersetzer: Gunnar Bittersmann.

Valides XHTML 1.0!
Valides CSS!
Kodiert in UTF-8!

Übersetzung der englischen Version vom 2007-10-26. Letzte Änderung der übersetzten Version am 2011-03-04 09:00 UTC.

Suchen Sie nach qa-forms-utf-8 im i18n-Blog, um alle Dokumentänderungen nachzuvollziehen.