Byte Order Mark
バイトオーダーマーク (BOM) とは、Unicode テキストの先頭に置かれ、符号化形式とバイト順を示す U+FEFF の文字である。
目的
デコーダが外部メタデータなしにテキストの符号化方式とバイト順を自動検出できるようにする。
メカニズム
符号化方式ごとに BOM のバイト列は異なり、UTF-8 は EF BB BF、UTF-16LE は FF FE、UTF-16BE は FE FF、UTF-32LE は FF FE 00 00、UTF-32BE は 00 00 FE FF である。デコーダは先頭 2〜4 バイトを読んで照合する。
ユースケース
- テキストエディタでのエンコード判定
- システム間でのテキストファイル交換
- データベース取り込み時のエンコード識別
- Excel での CSV ファイル処理
例
- 入力
UTF-16LE fileOutputFF FE ...Leading bytes FF FE indicate little-endian UTF-16
よくあるエラー
- Mistaking a UTF-8 BOM for data content
- Detect and strip the BOM when reading
関連用語
BOM
BOM(バイトオーダーマーク)は Unicode 文字 U+FEFF であり、テキストストリームの先頭に置いて符号化形式とバイト順を示す。 用語集
Endianness
エンディアンはメモリ上での複数バイト値の並び順である。ビッグエンディアンは最上位バイトを先頭に、リトルエンディアンは最下位バイトを先頭に格納する。 用語集
UTF-16
UTF-16はUnicodeの可変長符号化形式で、符号位置あたり2バイトまたは4バイトを使用する。BMPの文字は1つの16ビット符号単位、追加面の文字はサロゲートペア(2単位)で表する。 用語集
UTF-8
UTF-8はUnicodeの可変長符号化形式で、符号位置あたり1~4バイトを使用する。ASCIIと完全な後方互換性があり、ウェブと現代のシステムの事実上の標準である。 用語集