ByteOrderMark

在UCS 编码中有一个叫做 "Zero Width No-Break Space" ,“零宽无间断间隔”,它的编码是 FEFF。

而 FFFE 在 UCS 中是不存在的字符,所以不应该出现在实际传输中。

UCS 规范建议我们在传输字节流前,先传输字符 "Zero Width No-Break Space"。

这样如果接收者收到 FEFF,就表明这个字节流是 Big-Endian 的;

如果收到FFFE,就表明这个字节流是 Little- Endian 的。

因此字符 "Zero Width No-Break Space" 又被称作 BOM。

UTF-8 不需要 BOM 来表明字节顺序,但可以用 BOM 来表明编码方式。

字符 "Zero Width No-Break Space" 的 UTF-8 编码是 EF BB BF。

所以如果接收者收到以 EF BB BF 开头的字节流,就知道这是 UTF-8编码了。


你可能感兴趣的:(encoding)