ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
Unicodeの符号化のうち、UTF-16、UTF-32などで採用されているエンディアンネス識別符号。Unicode 3.0ではChapter13に書かれている。
Unicodeは「16ビット固定長」から始まった。同時期にISO/IEC 10646は「31ビット固定長」から始まった。
しかし多くのコンピューターは8ビット程度をバイトという単位として扱い、更にエンディアンネスも様々なものが混在した。符号のエンディアンネスを識別可能にするためには、二つの解決法がある。
前者を採用するのが最もスマートであるが、初期のUnicodeの符号化では後者が採用された。符号のエンディアンネスを先頭の文字で区別することから、これをバイトオーダーマーク(バイト順序マーク、BOM)という。
UnicodeおよびISO/IEC 10646では、U+FEFFとして「ZERO WIDTH NO-BREAK SPACE」(幅の無い改行しない空白、略してZWNBSP)という記号を定義している。これとバイト順が逆になるU+FFFEは同様に非文字とされ、未来永劫使用されない符号位置と定義された。
ZWNBSPは、見えないし改行もされないし文字幅もゼロの、存在自体を無視できる文字である。
かくして、ファイルまたはストリームの先頭のU+FEFFの順序を確認することで、符号化の種類やエンディアンネスを判別することができる。
BOMを付けるかどうかは任意であり、付けない場合もある。無い場合、エンディアンネスについては処理系依存ということになる。
但し、現在使われている「UTF-16」という符号化方法では明確に規定があり、BOMが無い場合はビッグエンディアン(UTF-16BE相当)として扱うことになっている。
なお、Microsoft Windowsで「Unicode」と俗称されている符号はUTF-16であり、通常はBOM付きリトルエンディアンで符号を入出力している。
UTF-8は、バイト順が明確に固定されている。従って、バイト順序マーク(BOM)といったものは必要とされない。
UTF-8では、U+FEFFは「0xEF 0xBB 0xBF」と3オクテットで符号化され、UTF-8の文書ファイル等では、それがUTF-8であることを示すために先頭に附されることが多い。但しバイト順をこれで決めているわけではないので、これをBOMと呼ぶことは現実には不正確である。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます