UTF Byte Order Mark (BOM) FAQ
1341 ワード
UTF-8はバイトを符号化ユニットとし、バイト順の問題はない.UTF-16は2バイトを符号化手段とし、1つのUTF-16テキストを解釈する前に、まず各符号化手段のバイト順を明らかにする.例えば、「奎」を受け取ったUnicode符号化は594 Eであり、「乙」のUnicode符号化は4 E 59である.UTF-16バイトストリーム「594 E」を受信した場合、これは「奎」ですか、それとも「乙」ですか.Unicode仕様で推奨されるタグバイト順の方法はBOMである.BOMは「Bill Of Material」のBOMテーブルではなく、Byte Order Markです.UCS符号化には「ZERO WIDTH NO-BLEAK SPACE」という文字があり、その符号化はFEFFである.一方,FFFEはUCSには存在しない文字であるため,実際の伝送に現れるべきではない.UCS仕様では、バイトストリームを転送する前に、「ZERO WIDTH NO-BRAK SPACE」という文字を転送することを推奨しています.このように受信者がFEFFを受信すると、このバイトストリームはBig−Endianであることを示す.FFFEが受信されると、このバイトストリームはLittle−Endianであることが示される.したがって「ZERO WIDTH NO-BRAK SPACE」はBOMとも呼ばれる.UTF−8はバイト順を示すためにBOMを必要としないが、符号化方式をBOMで示すことができる.文字「ZERO WIDTH NO-BRAK SPACE」のUTF-8符号化はEF BB BFである.したがって,受信者がEF BB BFで始まるバイトストリームを受信すると,これがUTF−8符号化であることが分かる.
http://blog.sina.com.cn/s/blog_3e9d2b350100as0b.html http://www.jb51.net/article/9794.htm
Bytes Encoding Form
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
http://blog.sina.com.cn/s/blog_3e9d2b350100as0b.html http://www.jb51.net/article/9794.htm