[文字コード] BOM
BOMについてのメモ.
BOM
BOM(Byte Order Mark)とは, Unicodeなどの16ビット幅のエンコーディング方式において, バイトオーダーを指定するためにファイルの先頭に挿入される16ビットの値.
UTF-16などのエンコーディング方式では, ビット列の並びとしてリトルエンディアンとビッグエンディアンの両方を許容しているため, 誤ったエンディアンでデータを読み込むと判読できなくなる.
そのため, ファイルの先頭にあるBOMを読み込み, そのデータがどちらのエンディアンで作成されたのかを判別してから残りを読み込む.
BOMは0xFEFF
という値で, これを誤ったエンディアンで読み込むと0xFFFE
となる.
また, UTF-8でエンコーディングされたデータはエンディアンに関わらず同じデータになるためBOMは必要ないが, データがUTF-8でエンコーディングされていることを明示的に表すためにBOMを付加することが許容されている.