BOMとは何か——付けるべき場合と、外すべき場合

文字化け・文字コードのコラム

CSVやテキストファイルを扱っていると、「BOM付きUTF-8」「BOM無しUTF-8」という選択肢に出会うことがあります。
同じUTF-8なのに2種類あるうえ、どちらを選ぶべきか場面によって逆になるので、混乱しやすいところかと思います。

BOMの正体は3バイトの目印

BOM は Byte Order Mark の略で、ファイルの先頭に置かれる短い印です。
UTF-8の場合、EF BB BF という3バイトが先頭に付くだけで、それ以降の中身は変わりません。

役割は「このファイルはUTF-8ですよ」と読み手に伝えることです。
文字コードはファイルの中身を見ただけでは確実に判別できないため、こうした目印が用意されています。

テキストエディタで開いても、BOMは基本的に表示されません。
そのため、見た目には違いがないのに一方だけ文字化けする、という状況が起こります。

付けたほうがいい場面

いちばん分かりやすいのが ExcelでCSVを開くとき です。
BOMが無いUTF-8のCSVは、日本語版ExcelにShift_JISと誤解されて文字化けします。BOMを付けておけば、ダブルクリックでそのまま開けます。

Windows向けにファイルを配布する場合も、付けておいたほうが無難な場面が多いように思います。

外したほうがいい場面

一方、BOMが邪魔になる場面もあります。

  • プログラムのソースコードや設定ファイル: 言語やツールによっては、先頭の3バイトを文字として読んでしまい、エラーになることがあります。
  • Web用のHTMLやPHP: 出力の先頭にBOMが混ざり、表示崩れや動作不良の原因になる場合があります。
  • Unix系のコマンドで処理するファイル: 1行目の先頭に見えない文字が入っている扱いになり、条件判定が意図せず外れることがあります。

そのため「常に付ける」「常に外す」ではなく、渡す相手で決めるのが実際的です。
Excelに渡すなら付ける、プログラムに渡すなら外す、と覚えておくとおおよそ足ります。

付け外しはやり直しが利く

BOMの付け外しは、先頭3バイトを足すか取るかだけの操作なので、文字が失われることはありません。
何度やり直しても中身は変わらないため、迷ったら試してみるのが早いところです。

MojiRescueでは 改行コード・BOMの変換ページ で、文字コードを変えずにBOMだけを付け外しできます。

ファイルの文字コードをブラウザ内で変換

MojiRescueなら、ファイルをドロップするだけで文字コード・BOM・改行コードを変換できます。ファイルは外部に送信されません。

ツールを使う