Unicode FAQ提到UTF-8不需要BOM。
问:无论底层处理器是小端还是大端,UTF-8编码方案是否相同?
答:是的。由于UTF-8被解释为字节序列,与使用16位或32位代码单元的编码形式相比,它没有字节顺序问题。在使用UTF-8时,只有当BOM被用作编码标记以将UTF-8与其他编码区分开来时,才会出现。它与字节顺序无关。
对于超过U+0744
的码位,UTF-8需要2到4个字节才能表示。这些字节的字节序是需要BOM指定的吗?还是UTF-8采用默认方式?
Unicode FAQ提到UTF-8不需要BOM。
问:无论底层处理器是小端还是大端,UTF-8编码方案是否相同?
答:是的。由于UTF-8被解释为字节序列,与使用16位或32位代码单元的编码形式相比,它没有字节顺序问题。在使用UTF-8时,只有当BOM被用作编码标记以将UTF-8与其他编码区分开来时,才会出现。它与字节顺序无关。
对于超过U+0744
的码位,UTF-8需要2到4个字节才能表示。这些字节的字节序是需要BOM指定的吗?还是UTF-8采用默认方式?
\xE2\x82\xAC
,不允许使用其他字节序列。0xDD 0x84
,这些代码单元以字节表示为DD 84
。字节84 DD
将是一个非法的UTF-8序列。0x0744
,在UTF-32中被编码为代码单元0x00000744
,在UTF-16中表示为07 44
或44 07
,在UTF-32中表示为07 44 00 00
或00 00 44 07
,具体取决于大小端。
因此,BOM用于指示实际使用的UTF-16/32大小端,但不用于UTF-8。