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 BOMOutputEF BB BFThe 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
関連用語
UTF-8
UTF-8はUnicodeの可変長符号化形式で、符号位置あたり1~4バイトを使用する。ASCIIと完全な後方互換性があり、ウェブと現代のシステムの事実上の標準である。 用語集
UTF-16
UTF-16はUnicodeの可変長符号化形式で、符号位置あたり2バイトまたは4バイトを使用する。BMPの文字は1つの16ビット符号単位、追加面の文字はサロゲートペア(2単位)で表する。 用語集
Endianness
エンディアンはメモリ上での複数バイト値の並び順である。ビッグエンディアンは最上位バイトを先頭に、リトルエンディアンは最下位バイトを先頭に格納する。 用語集
Byte Order Mark
バイトオーダーマーク (BOM) とは、Unicode テキストの先頭に置かれ、符号化形式とバイト順を示す U+FEFF の文字である。 用語集
Unicode
Unicode は国際的な文字符号化標準で、世界中のほぼすべての文字体系の各文字に一意の符号位置(U+0000〜U+10FFFF)を割り当てる。符号空間は 1,114,112 点である。 用語集
関連ツール
エンコーディング検出ツール
テキストのエンコーディング形態を確認:ASCII サブセット、UTF-8 BOM、非 ASCII 文字の有無。テキスト入力は常に UTF-8 として再エンコードされるため、GBK/Big5/Shift-JIS などのレガシーエンコーディングは区別できません。無料、プライベート、100%クライアントサイド。 ツール
文字コードリファレンス
Reference table of character encodings。無料、プライベート、100%クライアントサイド。 ツール
ファイルへ BOM 追加
ファイルコンテンツに UTF-8 BOM を追加。 ツール
ファイルから BOM 削除
ファイルコンテンツから UTF-8 BOM を削除。 ツール