Verwenden von Byte-Reihenfolgenmarkierungen
Stellen Sie einer Unicode-Nur-Text-Datei immer eine Byte-Reihenfolgenmarkung voran, die eine Anwendung, die die Datei empfängt, darüber informiert, dass die Datei bytegeordnet ist. Verfügbare Byte-Reihenfolgenmarkierungen sind in der folgenden Tabelle aufgeführt. Da Unicode-Nur-Text eine Sequenz von 16-Bit-Codewerten ist, ist er für die beim Schreiben des Texts verwendete Bytereihenfolge sensibel.
Hinweis
Eine Byte-Reihenfolgenmarkung ist kein Steuerzeichen, das die Byte reihenfolge des Texts auswählt.
| Bytereihenfolge-Marke | BESCHREIBUNG |
|---|---|
| EF BB BF | UTF-8 |
| FF FE | UTF-16, Little-Endian |
| FE FF | UTF-16, Big-Endian |
| FF FE 00 00 | UTF-32, Little-Endian |
| 00 00 FE FF | UTF-32, Big-Endian |
Hinweis
Microsoft verwendet UTF-16, Little-Endian-Byte reihenfolge.
Im Idealfall folgt der unicode-Text nur einem Satz von Byte-Sortierungsregeln. Dies ist jedoch nicht möglich, da sich Mikroprozessoren in der Platzierung des am wenigsten signifikanten Byte unterscheiden. Intel- und MIPS-Prozessoren positionieren das am wenigsten signifikante Byte an erster Stelle, während es von Den-Prozessoren (und allen Byte-umgekehrten Unicode-Dateien) an letzter Stelle positioniert wird. Bei nur einem einzigen Satz von Byte-Sortierungsregeln müssen Benutzer eines Microprozessortyps die Byte reihenfolge jedes Mal austauschen, wenn eine Nur-Text-Datei ausgelesen oder in diese geschrieben wird, auch wenn die Datei nie auf Grundlage eines anderen Mikroprozessors in ein anderes Betriebssystem übertragen wird.
Der bevorzugte Ort für die Angabe der Byte reihenfolge ist ein Dateiheader, Textdateien verfügen jedoch nicht über Header. Daher hat Unicode ein Zeichen (U+FEFF) und ein Nichtzeichen (U+FFFE) als Byte-Reihenfolgenmarkierungen definiert. Sie sind Spiegelungs-Bytebilder voneinander.
Da die Sequenz U+FEFF am Anfang einer regulären Nicht-Unicode-Textdatei sehr selten vorkommt, kann sie als impliziter Marker oder Signatur dienen, um die Datei als Unicode-Datei zu identifizieren. Anwendungen, die sowohl Unicode- als auch Nicht-Unicode-Textdateien lesen, sollten das Vorhandensein dieser Sequenz als Indikator dafür verwenden, dass die Datei höchstwahrscheinlich eine Unicode-Datei ist. Vergleichen Sie diese Technik mit der Verwendung des MS-DOS-EOF-Markers zum Beenden von Textdateien.
Wenn eine Anwendung U+FEFF am Anfang einer Textdatei findet, verarbeitet sie die Datei in der Regel als Unicode-Datei, obwohl sie weitere heuristische Überprüfungen für die Überprüfung durchführen kann. Eine solche Überprüfung kann so einfach wie das Testen sein, um herauszufinden, ob die Variation in den niedrigen Bytes viel höher als die Variation in den hohen Bytes ist. Wenn ASCII-Text beispielsweise in Unicode-Text konvertiert wird, ist jedes zweite Byte 0. Außerdem kann die Überprüfung sowohl auf Zeilenfeed- als auch Wagenrücklaufzeichen (U+000A und U+000D) und auf eine gleichmäßige oder ungerade Dateigröße einen starken Indikator für die Art der Datei liefern.
Wenn eine Anwendung U+FFFE am Anfang einer Textdatei findet, interpretiert sie sie so, dass es sich bei der Datei um eine in Byte umgekehrte Unicode-Datei handelt. Die Anwendung kann entweder die Reihenfolge der Bytes austauschen oder den Benutzer darauf aufmerksam machen, dass ein Fehler aufgetreten ist.
Da das Unicode-Byte-Reihenfolgenzeichen in einer Codepage nicht gefunden wird, wird es nicht mehr angezeigt, wenn Daten in ANSI konvertiert werden. Im Gegensatz zu anderen Unicode-Zeichen wird es nicht durch ein Standardzeichen ersetzt, wenn es konvertiert wird. Wenn eine Byte-Reihenfolgenmarkung in der Mitte einer Datei gefunden wird, wird sie nicht als Unicode-Zeichen interpretiert und hat keine Auswirkungen auf die Textausgabe.
Hinweis
Der Unicode-Wert U+FFFF ist in Nur-Text-Dateien unzulässig und kann nicht zwischen Anwendungen übergeben werden. Sie ist für die private Verwendung einer Anwendung reserviert.