UTF-8 BOM

作者: Shaw007 | 来源:发表于2018-11-19 14:36 被阅读0次

BOM
UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。例如“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59。如果我们收到UTF-16字节流“594E”,那么这是“奎”还是“乙”?

Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是Byte Order Mark。BOM是一个有点小聪明的想法:

在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编码了。

Windows就是使用BOM来标记文本文件的编码方式的。

文字显示

步骤1:文字首先以某种编码保存在文件中。
步骤2:Windows将文件中的文字编码映射到Unicode。
步骤3:Windows按照Unicode在字体文件中查找字体图像,画到窗口上。

相关文章

  • UTF-8还是UTF-8 BOM???

    结论 UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM。所以不含 BOM ...

  • Pandas读取json/csv提示ValueError: Ex

    问题产生的原因: pandas不支持utf-8 with BOM的文件, 支持的是UTF-8 不带BOM文件 解决...

  • QT源码编码选择

    QT默认源码编码为不带BOM的UTF-8 vc编译器支持带BOM的UTF-8编码的源码,如果编码为不带BOM的UT...

  • 非法字符:"\ufeff"

    编码问题 使用notepad++从utf-8 bom 转为无bom即可解决

  • UTF-8 带/不带 BOM

    简介 开发建议使用utf-8不带bom的格式。 utf-8带bom,是win基于兼容性考虑独创的格式,linux默...

  • ViewBinding java.lang.NullPointe

    解决方法 : 修改相关文件 : change UTF-8 BOM to UTF-8 Android studi...

  • ahk运行时提示第1行有错误

    ahk的脚步 *.ini 保存时,务必使用utf-8无bom。关于bom和无bom的差别,看这篇https://b...

  • Unicode BOM信息

    下表是各种UTF编码的BOM:UTF编码 Byte Order Mark (BOM)UTF-8 without B...

  • atom中文乱码

    file->setting 中的file Encoding设置为 UTF-8 将乱码文件改为UTF-8无BOM编码格式

  • UTF-8 BOM

    BOMUTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前...

网友评论

      本文标题:UTF-8 BOM

      本文链接:https://www.haomeiwen.com/subject/hitafqtx.html