BOM(バイトオーダーマーク)とは、テキストファイルの先頭に付加される数バイトの特別な符号で、そのファイルがどの文字コードで、どのようなバイト順序(エンディアン)で書かれているかを示す目印のことです。
現実世界に例えると、BOMは「本の表紙に書かれた言語表示」のようなものです。中身を読み始める前に、その本が日本語で書かれているのか英語で書かれているのかが表紙で分かれば、読み手は迷わず正しい前提で読み進められます。
なぜバイト順序が問題になるのか
コンピュータの内部では、複数バイトからなるデータを「上位のバイトから並べる方式」と「下位のバイトから並べる方式」の2種類で扱うことがあります。この並べ方の違いを知らずにデータを読み込むと、まったく異なる値として解釈されてしまうため、BOMによる事前の目印が重要な役割を果たします。
BOMの役割
- 文字コードの判別
ファイルがUTF-8やUTF-16など、どの文字コードで書かれているかをソフトウェアが判断する手がかりになります。 - バイト順序(エンディアン)の指定
UTF-16などでは、データを並べる順番(上位バイトが先か後か)を示す役割も担います。 - ファイルの先頭にのみ付与
目印としてファイルの一番先頭に、数バイトの特別な符号が挿入されます。
BOMの有無による違い
| 形式 | BOM | 特徴 |
|---|---|---|
| UTF-8(BOMなし) | なし | Web業界などで広く使われる標準的な形式 |
| UTF-8(BOMあり) | あり | 一部のソフトが文字コード判別のために付与 |
| UTF-16 | 基本的に必要 | バイト順序の判別にBOMが重要な役割を持つ |
名前の由来
「BOM」は英語の「Byte Order Mark」の頭文字を取ったものです。「バイトの順序(Order)を示す目印(Mark)」という名前のとおり、コンピュータ内部でのデータの並べ方を、ファイルを開く前の段階で明らかにしておくための仕組みとして考案されました。
トラブルの原因になるケース
BOMは便利な目印である一方、BOMの存在を想定していないプログラムでファイルを読み込むと、不具合の原因になることがあります。ファイルの先頭に見えない文字が挿入されているとみなされ、プログラムの動作エラーや、テキストの先頭に余分な文字が表示される文字化けを引き起こす場合があります。
利用時のポイント
特にWeb開発の現場では、BOMなしのUTF-8を標準として統一しておくことが多く、テキストエディタの保存設定でBOMの有無を選べる場合は、プロジェクトのルールに合わせて設定を確認しておくことが望まれます。

コメント