BOM (Byte Order Mark)
バイト・オーダー・マーク
UnicodeのUTF-16などの16bit単位の文字エンコーディングスキームでは、8bit単位でデータを配列する際のエンディアンとして、ビッグエンディアンとリトルエンディアンの両方を許している。そのため、どちらのエンディアンで記述されたデータかを確実に判定するための特別なマークとなる符号として、BOM(Byte Order Mark)が用意されている。
またBOMは、あるテキストがUnicodeで記述されているかどうかを自動判定する手段として使用される場合もある。この目的に使用される場合は、エンディアンが存在するUTF-16だけでなく、エンディアンが存在しないUTF-8のテキストに付加される場合もある。
BOMは、必ずテキストの先頭に付加される。テキストの中間に置かれることはない。BOMの値は、U+ffefと定められている。エンディアンを誤って読み込んだ場合は、この値は、0xfffeという16進値になるが、この値は常に定義されない値と決められている。つまり、最初の1文字を読み込んで、0xfffeという値を得た場合は、エンディアンを逆転して読み直せば良いことが分かる。
BOMを付けることは義務ではなく、必要に応じて判断することになる。インターネットの世界では、RFC 2781において、UTF-16のテキストにBOMを付けるべき場合と、付けるべきではない場合について条件を定めている。
Unicodeと同等であると言われるISO/IEC 10646ではBOMに相当するコードは、“ZERO WIDTH NON-BREAKING SPACE”と呼ばれ、BOMと呼ばれることはない。このコードが意味するところは、幅がゼロであり単語を分割しない空白文字ということであり、つまり何も機能を持たない文字として扱われる。BOMと異なるこの文字は、テキストのどの位置に出現してもよい。テキストの先頭に出現する“ZERO WIDTH NON-BREAKING SPACE”は、BOMと同じ機能を持つ文字として扱うことができる。
以下はBOMが付加されたテキストファイルの16進ダンプリストである。
BOM付きUTF-16リトルエンディアンff fe cf 30 ed 30 fc 30 BOM付きUTF-16ビッグエンディアン fe ff 30 cf 30 ed 30 fc BOM付きUTF-8 ef bb bf e3 83 8f e3 83 ad e3 83 bc |
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|