Dokument-Zeichensatz

Frage

Was ist der Dokument-Zeichensatz für XML und HTML und wie hängt er mit den Zeichencodierungen zusammen, die man für seine Dokumente verwendet?

Antwort

In dieser FAQ beziehen wir uns immer dann, wenn von Unicode die Rede ist, sowohl auf Unicode als auch auf ISO/IEC 10646 – der Einfachheit halber und der gängigen Praxis entsprechend.

Der Dokument-Zeichensatz oder Basis-Zeichensatz von XML und HTML (ab Version 4.0) ist das Universal Character Set (UCS), das durch ISO/IEC 10646 und Unicode definiert wird. Diese beiden Standards sind Zeichen für Zeichen identisch.

Das logische Modell, welches beschreibt, wie XML bzw. HTML verarbeitet wird, ist in Hinblick auf den Unicode-Zeichensatz beschreiben.

Das bedeutet nicht, dass alle HTML- und XML-Dokumente als Unicode codiert werden müssen; sondern es bedeutet, dass diese Dokumente nur Zeichen enthalten dürfen, die in Unicode definiert sind. Dabei ist zu beachten, dass Zeichensätze und Zeichencodierungen verschiedene Dinge sind. Das ganze Unicode-Repertoire kann auf verschiedene Weise codiert werden: UTF-8, UTF-16 und UTF-32. Neben diesen kann für ein Dokument aber auch eine andere Codierung gewählt werden, wenn sie entsprechend deklariert wird und die von ihr verkörperten Zeichen eine Teilmenge des Unicode-Repertoires sind (man wird kaum eine Codierung finden, bei der das nicht der Fall wäre).

Es ist allerdings vorteilhaft, möglichst immer eine Unicode-Codierung zu verwenden, denn dies vereinfacht viele Aspekte der Web-Internationalisierung und eine solche Codierung wird weitgehend von HTML-Browsern und allen XML-Prozessoren unterstützt.

Der Dokument-Zeichensatz hat zur Folge, dass Werte von numerischen Zeichenreferenzen (wie ǵ oder ǵ für den lateinischen Kleinbuchstaben g mit Akut) als Unicode-Zeichen interpretiert werden – unabhängig von der gewählten Zeichencodierung. Die Nichtbeachtung des Unterschieds zwischen Zeichensatz und Zeichencodierung ist eine häufige Fehlerquelle.

Übrigens

In der Praxis können nicht alle Unicode-Zeichen an jeder Stelle in XML und HTML verwendet werden. Einige Zeichen sind bspw. in Elementbezeichnern nicht erlaubt; einige Steuerzeichen dürfen nicht im Inhalt vorkommen. XML 1.1 erlaubt gegenüber XML 1.0 die Verwendung vieler weiterer Zeichen in Elementbezeichnern.

Historisches

HTML 2.0 legte fest, dass alle Zeichen in einem HTML-Dokument gemäß ISO 8859-1 (ISO Latin 1) zu interpretieren sind. Es wurde aber auch gesagt, dass alle zukünftigen Versionen eine Obermenge davon verwenden werden, nämlich Unicode (oder ISO 10646), wodurch eine riesige Anzahl von Zeichen aus aller Welt zur Verfügung steht.

Die Diskussion über den besten Weg, Unicode im Internet einzusetzen (RFC 2130 vom April 1997 und RFC 2070 vom Januar 1997) war noch in vollem Gange, als HTML 3.2 herauskam (Januar 1997), und so verzögerte sich die Einführung von Unicode in HTML bis zur Version HTML 4.0 (Dezember 1997).