2000/04/27 [木]
UNICODE は ASCII 文字のように 8bit = 1 Byte 固定長の文字コードではないため、ファイルに保存しようとするときには、その符号化の方法がいくつか考えられます。特に 16bit = 1 Byte と考えるとエンディアンも考慮する必要があります。そんな時、UNICODE ポイント U+FEFF にある Zero Width Non-breaking Space が役に立ちます。この文字は幅ゼロの文字のためこの記号をファイルの先頭に記述することで文字の符号化方式を判定しようというのです。そのようなことから、この記号は Byte Order Mark、略して BOM と呼ばれることもあります。具体的にはファイルの先頭が次のようになっている場合、右のようなエンコーディング方式とエンディアンとして考えます。
B0 | B1 | B2 | B3 | Encoding Name | Endian |
---|---|---|---|---|---|
00 | 00 | FE | FF | UTF-32 | Big Endian |
FF | FE | 00 | 00 | UTF-32 | Little Endian |
FE | FF | UTF-16 | Big Endian | ||
FF | FE | UTF-16 | Little Endian | ||
EF | BB | BF | UTF-8 |
by seclan