Was ist BOM?
Der Byte-Order-Mark (BOM) oder Byte-Order-Mark ist ein spezieller Mark, der in eine Unicode-Datei eingefügt wird, die mit UTF-8, UTF16 oder UTF-32 codiert ist, um den Codierungstyp einer Unicode-Datei zu identifizieren. Für UTF-8 ist kein BOM erforderlich, da er verwendet wird, um den Kodierungstyp und die Byte-Reihenfolge (Big-Endian oder Little-Endian) einer mehrbyte-codierten Datei zu markieren. In UTF-8 wird die Anzahl der für jedes Zeichen kodierten Bits durch das erste Byte angegeben, und es gibt keinen Unterschied zwischen Big-Endian und Little-Endian. UTF-8 benötigt keinen BOM, obwohl der Unicode-Standard die Verwendung von BOMs in UTF-8 erlaubt. Daher ist UTF-8 ohne BOM die Standardform, und es ist hauptsächlich Microsofts Gewohnheit, einen BOM in eine UTF-8-Datei einzufügen (übrigens: Es ist auch Microsofts Gewohnheit, UTF-16 mit einem BOM "Unicode" zu nennen, ohne ins Detail zu gehen). BOMs werden für UTF-16 und UTF-32 vorbereitet, um die Byte-Reihenfolge zu markieren. Microsoft verwendet BOM in UTF-8, weil es eine klare Unterscheidung zwischen UTF-8 und ASCII-Codierung ermöglicht, andernfalls könnte das Öffnen einer CSV-Datei in Excel unübersichtlich sein. Eine solche Datei kann jedoch auch in anderen Betriebssystemen als Windows Probleme verursachen. Der Unterschied zwischen "UTF-8" und "UTF-8 mit BOM" besteht darin, ob es einen BOM gibt oder nicht. Das heißt, ob am Anfang der Datei ein U+FEFF vorhanden ist. UTF-8-Webcode sollte keine BOMs verwenden, sonst sind Fehler häufig. Beim Ausgaben einer CSV-Datei aus der HTTP-Antwort ist sie standardmäßig nicht enthalten, wenn sie auf utf8 gesetzt ist BOM, aber Windows Excel verwendet BOM, um die UTF8-Codierung zu bestätigen, und alle müssen BOM am Anfang der Datei schreiben.
Wenn du zum ersten Mal einen Java-Codegenerator entwickelst, fügst du die Datei direkt hinzuSchreiben Sie in eine UTF-8-Datei, die das BOM-Tag enthältDies führt zu Verpackungsfehlern, wie folgt:
Illegale Zeichen: '\ufeff'
Wie benutze ich .NET / C#, um festzustellen, ob eine Datei BOM-Tags enthält? , der Code lautet wie folgt:
Kollegen, angehängtKonvertiert das UTF-8 BOM-Format in das UTF-8 (ohne BOM-Tags) Format, der vollständige Code lautet wie folgt:
(Ende)
|