Corredor

ウェブ、プログラミングの勉強メモ。

UTF-8 で書かれたテキストファイルが BOM 付きかどうかを「メモ帳」で調べる簡単な方法

UTF-8 のテキストファイルを作成するとき、「BOM 付き」とか「BOM なし」といった言葉を耳にする。

BOM」とは Byte Order Mark の略で、「このファイルは Unicode 形式で書かれていますよ~」と判別させるための情報。UTF-8 の場合、ファイルの先頭に「0xEF 0xBB 0xBF」という3バイトのデータが付与されると、BOM 付き UTF-8 となる。この3バイトがない場合は BOM なし UTF-8、時に UTF-8N とも読んだりする。

テキストファイルの形式が分かるなら書いてあった方が親切なのでは?と思うが、この BOM によってデータが正しく処理できないことが多いため、大抵は BOM を付けないようにしている。

さて本題。この BOM が対象のテキストファイルに付いているかどうかを調べる、簡単な方法。

  1. BOM 付きかどうか調べたい、UTF-8 形式のテキストファイルを用意し、エクスプローラ上の「プロパティ」からファイルサイズ (バイト) を確認する。
  2. そのテキストファイルを Windows 標準の「メモ帳」で開き、「名前を付けて保存」から別名で保存する。この時、「文字コード」に「UTF-8」が選択されていることを確認しておく。
  3. 別名で保存したテキストファイルの「プロパティ」を開き、ファイルサイズ (バイト) を確認する。
  4. 元のファイルと 3. で確認したファイルのサイズが同一であれば、対象のファイルは BOM 付き。逆に、元のファイルより 3. で別名保存したファイルの方が3バイト大きくなっている場合は、対象のファイルは BOM なし。

以上。

これは、Windows 標準の「メモ帳」が UTF-8 形式でテキストを保存するとき、必ず BOM 付きで保存してしまう仕様を利用したもの。

UTF-8 の BOM は先述のとおり、ファイルの先頭に3バイトのデータを付与する。元のファイルに BOM が付いていない場合、BOM 付きで別名保存したテキストファイルと3バイトの差が生まれることになる、というわけだ。この差が生まれなければ、元のファイルは BOM 付きだ。

BOM なしにする方法について

Sakura エディタ程度のちょっとリッチなテキストエディタなら、大抵ファイルの保存時に BOM の有無を選べる。

ただ、Atom など最近のカッチョイイ系のテキストエディタは、新規作成するファイルは BOM なしのみ、というのが主流な様子。ちなみに Atom は BOM 付きのテキストファイルを編集しても BOM 付きのまま保存された。

一般的には BOM が必要になるケースの方が稀なので、逆に BOM がある時だけアラートを上げてくれると助かる。