コンテンツへスキップ
uencoder

BOM

BOM(バイトオーダーマーク)は Unicode 文字 U+FEFF であり、テキストストリームの先頭に置いて符号化形式とバイト順を示す。

目的

UTF-16 や UTF-32 のビッグエンディアンとリトルエンディアンを伝え、UTF-8 では符号化の署名として機能する(UTF-8 にバイト順の曖昧さはないが)。

メカニズム

U+FEFF は符号化形式に応じてバイト列へ変換される。UTF-8 では EF BB BF、UTF-16LE では FF FE、UTF-16BE では FE FF になる。復号側は先頭数バイトを読んで既知の BOM と照合し、符号化を判定する。U+FEFF 自体はゼロ幅ノーブレークスペースであり、署名を兼ねられる理由である。

ユースケース

  • テキストファイルのエンコード自動判定
  • クロスプラットフォームなテキスト交換
  • CSV/TSV ファイルのエンコードマーカー
  • データベースエクスポートのエンコード

例

  • 入力
    UTF-8 BOM
    Output
    EF BB BF

    The first three bytes of a file

よくあるエラー

A UTF-8 BOM being rejected by a JSON parser (RFC 8259 forbids it)
Do not use a BOM in JSON files

関連用語

関連ツール

References