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
 

Das BOM (byte-order mark) in HTML

Zielgruppe: XHTML/HTML-Autoren (die Web-Editoren/Texteditoren oder Scripte benutzen), Script-Entwickler (PHP, JSP u.a.), CSS-Entwickler, Webprojekt-Manager und alle, die besser verstehen möchten, was das BOM ist und welche Auswirkungen es bei HTML hat

Hinweis: Das englische Original wurde aktualisiert. Für Änderungen siehe Blog.

Frage

Was ist das BOM (byte-order mark) und was muss man darüber wissen, wenn man HTML verfasst?

Antwort

Was ist ein BOM?

Am Anfang einer Unicode-Datei stehen möglicherweise einige Bytes, die das Unicode-Zeichen U+FEFF ZERO WIDTH NON-BREAKING SPACE (ZWNBSP, nullbreites geschütztes Leerzeichen) darstellen. Diese Bytekombination ist das BOM (byte-order mark).

Wenn ein Zeichen in UTF-16 codiert wird, gibt es zwei mögliche Reihenfolgen seiner 2 bzw. 4 Bytes (little-endian oder big-endian). Das folgende Bild verdeutlicht dies. Das BOM gibt an, welche Reihenfolge verwendet wurde, damit Applikationen den Inhalt unmittelbar decodieren können. Bei UTF-16-codiertem Inhalt sollte immer ein BOM am Anfang stehen.

Bytes, die das BOM darstellen

Bei der UTF-8-Codierung ist im Gegensatz zu UTF-16 kein BOM erforderlich, denn dort gibt es nur eine mögliche Reihenfolge der Bytes. Das BOM kann dennoch in UTF-8-codiertem Text auftreten, entweder als Nebenprodukt einer Umwandlung der Zeichencodierung oder weil es durch ein Editorprogramm hinzugefügt wurde. In diesem Fall spricht man auch von UTF-8-Signatur.

Was muss man über das BOM wissen?

Wenn ein BOM in UTF-8-codiertem Inhalt vorkommt, kann es auf Webseiten oder in Editoren zu Leerzeilen oder unerwarteten Zeichen () führen. Darum ist es aus Interoperabilitätsgründen am besten, das BOM bei UTF-8-codiertem Inhalt wegzulassen, wenn man die Wahl hat.

Für weitere Informationen zum Erkennen und Entfernen des BOMs siehe Darstellungsprobleme durch das UTF-8-BOM. Ob bei einer Webseite am Anfang oder inmitten des Inhalts ein BOM vorkommt, lässt sich mithilfe des W3C-Internationalization-Checkers herausfinden.

Wenn Ihr Editor gestattet anzugeben, ob Sie beim Speichern als UTF-8 ein BOM möchten, sollten Sie in aller Regel nein sagen.

BOM-Einstellung in einem Dialogfenster

Bei Verwendung von UTF-16: Gemäß der HTML5-Spezifikation muss bei UTF-16-codierten Webseiten ein BOM im HTML-Code verwendet werden. Dies ist, was dem Browser die Zeichencodierung der Seite angibt.

Es wird empfohlen, UTF-8 als Unicode-Codierung zu verwenden, nicht UTF-16. Für die meisten ist dies also akademisch.

 

Die HTML5-Spezifikation erlaubt gegenwärtig für UTF-16 keine weitere Angabe der Zeichencodierung im Dokument. Dies ist aber noch in der Diskussion und könnte sich zukünftig ändern. Das bedeutet also, dass das BOM selbst die Angabe ist, die man hinzufügen muss.

Dass bei UTF-16-codierten Inhalten in HTML5 ein BOM erforderlich ist, bedeutet, dass man HTML5-Dokumente nicht als "UTF16BE" oder "UTF16LE" gekennzeichnet ausliefern sollte. Dies ergibt sich aus dem Unicode-Standard, der besagt, dass man kein BOM verwenden soll, wenn für den Text eine dieser beiden Zeichencodierungen angegeben ist. Wenn man also die Zeichencodierung im HTTP-Header angeben möchte (was die HTML5-Spezifikation nicht verbietet), sollte man ausschließlich den Bezeichner "UTF-16" aus dem IANA-Register für Zeichencodierungen verwenden.

Hier geht es lediglich um die Kennzeichnung für den Inhalt. Die eigentliche Bytesequenz ist natürlich dieselbe, egal ob man den Inhalt als UTF-16 kennzeichnet und ein BOM voranstellt oder ob man den Inhalt als UTF16LE bzw. UTF-16BE kennzeichnet.

 

Übrigens

Das BOM wird auch bei als UTF-32 gekennzeichnetem Text verwendet und soll nicht für als UTF-32BE oder UTF-32LE gekennzeichnetem Text verwendet werden. Von der Verwendung von UTF-32 für HTML-Inhalt wird jedoch stark abgeraten, weshalb diese Zeichencodierung hier nicht erwähnt wurde.

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: Richard Ishida, W3C. Übersetzer: Gunnar Bittersmann.

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

Übersetzung der englischen Version vom 2010-08-10. Letzte Änderung der übersetzten Version am 2011-04-15 14:30 GMT.

Suchen Sie nach qa-byte-order-mark im i18n-Blog, um alle Dokumentänderungen nachzuvollziehen.