Das Kefk Network Wiki befindet sich im Testbetrieb.
Byte Order Mark
Aus Kefk.
| Unicode |
|---|
| Kodierungen |
| Techniken |
| Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort Byte_Order_Mark, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation. |
Als Byte Order Mark (BOM, dt. „Bytereihenfolge-Markierung“) wird das Unicode-Zeichen an Position U+FEFF (zero width no-break space) bezeichnet, wenn es verwendet wird um die Byte-Reihenfolge einer in UTF-16 oder UTF-32 kodierten UCS/Unicode Zeichenkette anzugeben und/oder um den entsprechenden Text als in UTF-8, UTF-16 oder UTF-32 kodiert zu markieren.
Bei den Kodierungen UTF-16 und UTF-32 muss die Byte-Reihenfolge angegeben werden, da die Zeichen jeweils mindestens entweder in 16 oder 32 Bit großen Werten kodiert sind und damit mehrere Bytes benötigen. Das Byte-Order-Mark kennzeichnet dabei in welcher Reihenfolge die Bytes ausgewertet werden müssen. Diese Markierung wird immer dann besonders wichtig, wenn Daten zwischen unterschiedlichen Computersystemen ausgetauscht werden.
In UTF-16 besteht das BOM in Big-Endian-Notation aus der Zweibyte-Sequenz FE FF, in der Little-Endian-Notation umgekehrt aus FF FE. Da das Zeichen U+FFFE als ungültig definiert ist, kann durch die Reihenfolge der zwei Bytes eindeutig die Reihenfolge der Bytes festgestellt werden. Bei UTF-32 stehen davor oder dahinter noch zwei Nullbytes, die zur Erkennung der Byte-Reihenfolge dienen.
Bei UTF-8 stellt sich das Problem der Byte-Reihenfolge zwar nicht, doch ein BOM am String- oder Dateianfang ist erlaubt um die Verwendung von UTF-8 als Kodierung eindeutig zu kennzeichnen. Wird ein BOM verwendet kann es jedoch auch zu Problemen mit Programmen kommen, die kein Byte-Order-Mark erwarten oder kennen. So wird in Unix-artigen Umgebungen oft die Shebang verwendet, welche ebenfalls am Dateianfang stehen muss. Auch melden Compiler wie z. B. gcc bei Verwendung eines BOM überschüssige Zeichen am Dateianfang und in PHP führt das BOM zur Ausgabe von Zeichen an den Browser, so dass ohne Output Buffering keine HTTP-Header mehr gesendet werden können. Die UTF-8-Kodierung des BOM besteht aus der Bytesequenz EF BB BF, die in nicht UTF-8-fähigen Texteditoren und Browsern meist als ISO-8859-1-Zeichen  erscheinen.
Bytefolgen der BOM in verschiedenen Zeichenkodierungen
| Kodierung | Bytefolge |
|---|---|
| UTF-8 | EF BB BF |
| UTF-16 Big Endian | FE FF |
| UTF-16 Little Endian | FF FE |
| UTF-32 Big Endian | 00 00 FE FF |
| UTF-32 Little Endian | FF FE 00 00 |
Weblinks
- The Unicode Standard, chapter 13 (PDF) (siehe Kapitel 13.6 – Specials) (englisch)
- FAQ – UTF and BOM (englisch)
| Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort Byte_Order_Mark, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation. |
