BOM——Byte Order Mark,就是字节序标记

在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE“的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。

UCS规范建议我们在传输字节流前,先传输 字符”ZERO WIDTH NO-BREAK SPACE“。

如果接收者收到FEFF,就表明这个字节流是大字节序的;如果收到FFFE,就表明这个字节流是小字节序的。因此字符”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编码了。

在utf-8编码文件中BOM在文件头部,占用三个字节,用来标识该文件属于utf-8编码,现在已经有很多软件识别BOM头,但还是有些不能识别BOM头,比如PHP就不能识别BOM头,这也就是用记事本编辑utf-8编码的PHP文件后,就会报错的原因。

在windows环境下,用记事本打开任何一个文本文件,另存为utf-8格式后,这样文件就自动被加上了BOM头信息。可以很明显的看出,含BOM头的文件多出三个字节 efbbbf。notepad++会自动添加为带Bom的utf8。

拓展资料:

UTF-8

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

优缺点:

优点

UTF-8编码可以通过屏蔽位和移位操作快速读写。字符串比较时strcmp()和wcscmp()的返回结果相同,因此使排序变得更加容易。字节FF和FE在UTF-8编码中永远不会出现,因此他们可以用来表明UTF-16UTF-32文本(见BOM) UTF-8 是字节顺序无关的。它的字节顺序在所有系统中都是一样的,因此它实际上并不需要BOM。

缺点

你无法从UNICODE字符数判断出UTF-8文本的字节数,因为UTF-8是一种变长编码它需要用2个字节编码那些用扩展ASCII字符集只需1个字节的字符 ISO Latin-1 是UNICODE的子集,但不是UTF-8的子集 8位字符的UTF-8编码会被email网关过滤,因为internet信息最初设计为7位ASCII码。因此产生了UTF-7编码。 UTF-8 在它的表示中使用值100xxxxx的几率超过50%, 而现存的实现如ISO 2022, 4873, 6429, 和8859系统,会把它错认为是C1 控制码。因此产生了UTF-7.5编码。

最新文章

  1. apache commons工具包
  2. 自动布局(Masonry)设置tabbar
  3. [转载]DataSet导入到Excel文件
  4. 随笔2 PAT1001.A+B Format (20)
  5. [转载]非常完善的Log4net详细说明
  6. map中的erase成员函数用法
  7. mcrypt加密与解密
  8. android学习日记23--Android XML解析
  9. Mysql数据库的索引原理
  10. NIO学习:buffer读入与写出(文件复制示例)
  11. [Forward]Visual Guide: Setting up My Sites in SharePoint 2013
  12. 翻书的效果:FMX.TSwipeTransitionEffect Animation
  13. linux nginx搭配https
  14. AngularJS进阶(三十六)AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记)
  15. 数据结构和算法总结(一):广度优先搜索BFS和深度优先搜索DFS
  16. SQL分组求每组最大值问题的解决方法收集 (转载)
  17. h5 文件下载
  18. Git 分支 - 分支的新建与合并
  19. 简单分析Java中审批业务流程业务原理
  20. 在Eclipse中使用JUnit4进行单元测试(图文教程一)

热门文章

  1. ElasticSearch6(二)-- Java API连接es
  2. M0 M4时钟控制(一)
  3. 简单xmlrpc服务器
  4. MyISAM和InnoDB区别 及选择
  5. 三剑客之awk
  6. zabbix监控告警Received empty response from Zabbix Agent Assuming that agent dropped connection
  7. 联想y720 淋了雨,字体变得模糊了
  8. [No0000153]详解C# 迭代器【转】
  9. 若父设置了overflow: hidden;子如何不受影响
  10. MySQL transaction