为BOM指定字节序列的规则是什么?

时间:2015-07-27 07:45:41

标签: utf-8 character-encoding byte-order-mark

我正在处理一些文件编码的东西。当我学习BOM时,它会显示The UTF-8 representation of the BOM is the byte sequence 0xEF,0xBB,0xBF,然后我会找到Code page layout这是一个包含许多字符编码信息的表。我很好奇的是,如果BOM字节序列有一些规则,我的意思是,为什么不使用0xEE,0xFF,0xBB或任何其他字节序列来表示UTF-8?提前谢谢。

1 个答案:

答案 0 :(得分:0)

BOM特定于Unicode UTF(Unicode转换格式)编码。它是根据特定UTF中定义的规则对特定字节序列进行编码的Unicode字符U+FEFF ZERO WIDTH NO-BREAK SPACE,与任何其他Unicode代码点相同。 BOM的特殊之处在于它是编码文本前面的第一个编码码点,因此您可以发现使用哪个UTF对文本进行编码,如果没有通过其他方式指定带外。

UTF-8的BOM为EF BB BF,UTF-16LE为FF FE,UTF-32LE为FF FE 00 00等。它们只是同一个Unicode的不同表示形式codepoint U+FEFF

您链接到的其他编码(如Windows-1252)不使用BOM并且无法对该特定字符进行编码,因此没有替代BOM的“Windows-1252编码”。