UTF-8のBOM付き・BOM無しの違いと確認方法

文字コードの一種であるUnicodeにはBOM無しとBOM付きの2種類が存在します。BOMはバイトオーダーマーク(byte order mark)の略で、Unicodeで符号化したテキストの先頭に付与される数バイトのデータのことです。

今回はUTF-8のBOM付き・BOM無しの違いと確認方法について紹介します。

BOM付き・BOM無しの違いについて

プログラムがテキストデータを読み込む際に先頭の数バイトによりUnicodeのデータであることやどの種類の符号化形式を採用しているのかを判別しています。BOM付きのUTF-8であれば先頭の3バイトがBOMであり、<0xEF 0xBB 0xBF>というデータになります。

Microsoft ExcelなどのアプリケーションによってはBOM付きでなければ符号化方式がUTF-8なのかUTF-16なのか、またはUTF-32なのか、あるいはまったく別の文字コードなのか判断できないことがあります。一方、Webページとして使用されるHTMLファイルの場合はBOM無しで保存・上書きする方が良いとされています。これはWebページを動的に処理するPHPなどのプログラムがBOM付きのテキストファイルを正常に処理することができないことがあるからです。このようにシチュエーションによりどちらの方が良いという事は一概には言えません。

BOM付きとBOM無しのファイルの違いは先頭の3バイトがあるか無いかということであり、それ以外のファイルの内容や文字コード(符号化方式)については全く同じものです。ということはエンコードの方法が間違っていなければ単なるテキストファイルとしては正常に表示されるので、何らかのプログラム上でファイルが誤動作した場合にBOMが原因であるとは気づきにくいということが言えます。

DreamWeaverの確認方法

ファイルを開いた状態で上部のメニューから「修正」→「ページプロパティ」を順に選択すると、画面中央部に「Unicode 署名を含める(BOM)」というチェックボックスがあります。このチェックが付いていればBOM付き、チェックを外すとBOM無しになります。

TeraPadの確認方法

フリーのテキストエディタであるTeraPadの場合は上部メニューの「ファイル」→「文字/改行コード指定保存」で確認することができます。ちなみに「UTF-8」がBOM付き、「UTF-8N」がBOM無しを意味しています。同じくフリーウェアのサクラエディタなどもBOMの設定が可能なので、少しリッチな機能の付いたテキストエディタを色々と試してみてはいかがでしょうか。

秀丸の確認方法

シェアウェアでメジャーなテキストエディタである秀丸は、「名前を付けて保存」画面の下に「エンコードの種類」という項目があります。その右に「BOMを付ける」というチェックボックスがあるのでここを確認すると非常に分かりやすいですね。

メモ帳使用時の注意点

Windowsの標準機能であるメモ帳は文字コードをUTF-8にして保存すると必ずBOM付きになってしまいます。うっかりBOM無しのファイルを上書き保存してしまうとBOMの情報が書き換えられてしまうので注意しましょう。

しかし、この機能を使えばBOM付きかBOM無しかを判断することは可能です。やり方は簡単で、まずはBOM付き・BOM無しを調べたいファイルをメモ帳で開いてから適当な名前を付けて保存します。それからファイルを右クリックして「プロパティ」よりファイルサイズを確認し、元のサイズより3バイト増えていたら元のファイルはBOM無し、サイズが同じであればBOM付きであるということになりますね。

まとめ

UTF-8のBOMはテキストファイルの符号化方式の種類を判別するための情報がファイル先頭の3バイトで表現されているというものです。そしてBOM付き・BOM無しを正しく扱わないとアプリケーションによりテキストファイルが正常に処理されない場合があります。

BOM付き・BOM無しの確認は各種テキストエディタの設定画面や保存画面で行うことができるのでぜひBOMの情報に注目してテキストファイルやWebページを作成するようにしてください。


イベント