文本编辑BOM标记(Byte Order Mark)
微软的自带记事本程序notepad.exe会给UTF-8编码的文件头加入三个隐藏的字节(即BOM)。这是一种很愚蠢的做法。就是为了让编辑器不去猜测文件本身是ASCII码还是UTF-8。
什么是BOM
BOM(byte-order mark),即字节顺序标记,它是插入到以UTF-8、UTF16或UTF-32编码Unicode文件开头的特殊标记,用来识别Unicode文件的编码类型。对于UTF-8来说,BOM并不是必须的,因为BOM用来标记多字节编码文件的编码类型和字节顺序(big-endian或little-endian)。
在绝大多数编辑器中都看不到BOM字符,因为它们能理解Unicode,去掉了读取器看不到的题头信息。若要查看某个Unicode文件是否以BOM开头,可以使用十六进制编辑器。下表列出了不同编码所对应的BOM。
BOM Encoding
EF BB BF UTF-8
FE FF UTF-16 (big-endian)
FF FE UTF-16 (little-endian)
00 00 FE FF UTF-32 (big-endian)
FF FE 00 00 UTF-32 (little-endian)
BOM的来历
为了识别 Unicode 文件,Microsoft 建议所有的 Unicode 文件应该以 ZERO WIDTH NOBREAK SPACE(U+FEFF)字符开头。这作为一个“特征符”或“字节顺序标记(byte-order mark,BOM)”来识别文件中使用的编码和字节顺序。
Linux/UNIX 并没有使用 BOM,因为它会破坏现有的 ASCII 文件的语法约定。
不同的编辑工具对BOM的处理也各不相同。使用Windows自带的记事本将文件保存为UTF-8编码的时候,记事本会自动在文件开头插入BOM(虽然BOM对UTF-8来说并不是必须的),但是editplus就不会这样做。
References:
http://blog.csdn.net/zcmssd/article/details/6086711
http://club.topsage.com/thread-2227977-1-1.html
http://en.wikipedia.org/wiki/Byte-order_mark
转载于:https://www.cnblogs.com/foohack/p/3627553.html
文本编辑BOM标记(Byte Order Mark)相关推荐
- 什么是BOM(Byte Order Mark)?
BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码,但它对于文件的读者来说是不可见字符. 下表列出不同的字符编码的BO ...
- php 签名 bom,PHP与Unicode签名(BOM,Byte Order Mark)
在编写或者修改用UTF-8编码保存的PHP文件时,有时会莫名其妙出现一些问题: 1. 页面显示一个"锘"字,其他一片空白: 2. 不能登入或者不能登出: 3. 页顶出现一条空白: ...
- Keil错误fatal error: UTF-16 (LE) byte order mark detected
错误提示:fatal error: UTF-16 (LE) byte order mark detected '..\blinky.c' but encoding is not supported 原 ...
- 理解字节序 [Understanding Big and Little Endian Byte Order]
原文地址 (本文对于字节序讲解的很清楚,容易理解.) Problems with byte order are frustrating, and I want to spare you the gri ...
- 一文带你秒懂 字节序(byte order),比特序(bit order),位域(bit field)
字节序,比特序,位域 前言 引出疑惑 字节序 比特序 网卡-比特的发送和接收顺序 大端序发送给小端序 小端序发送给大端序 位域 定义协议的万能公式 前言 不总结出来睡不着觉啊md,本来想着1点就能 ...
- Python: Numpy Byte Order
1. get native endianess python - How to get endianness of numpy dtype - Stack Overflow 2. numpy dtyp ...
- Android中输出版权标记符号Copyright mark
背景 版权标记图片 实现 效果图 背景 就是为了装逼,给自己开发的应用加上版权标记,例如微博的起始页面如下所示: 那我们一起来装个逼吧! 版权标记图片 没错,这就是一个圈圈里面加了一个c. 实现 在s ...
- 去除utf8文件的bom标记
http://stackoverflow.com/questions/1068650/using-awk-to-remove-the-byte-order-mark http://thegreyblo ...
- JavaSE--jdom解析之bom
参考:http://www.cnblogs.com/findumars/p/3620078.html 1 org.jdom2.input.JDOMParseException: Error on li ...
最新文章
- 华为AR28-31配置光纤接入
- Windows驱动中的Crash回调
- asp.net DBHelper类
- [蓝桥杯][2013年第四届真题]买不到的数目(动态规划)
- android层级关系图,画出 View 的层级 3D 图和树形图来分析层级关系
- 在线涂鸦画板小程序源码
- mysql索引的增删_mysql索引的增删改查怎么实现?
- 26个要素,仅仅依靠百度打造成功网站
- android 手机 跑分榜,安兔兔跑分最新排行图 2020年4月Android手机性能榜
- 20160809下午14:00公司断网处理过程(网络架构VSS模式)
- sqlserver中某列转成以逗号连接的字符串及逆转、数据行转列列转行
- 麒麟810怎么样_麒麟810+6G+128G+大电池,千元价格的手机上手体验
- oh my Zsh使用手册
- Linux系统如何添加IP别名
- 字节跳动常见算法面试题top50整理
- 搭建环境方便简单教程之php环境详细搭建
- jacob word另存为
- 一鲸落万物生,公链还需看Hoo Smart Chain,六十余家项目报名万物生长计划
- 云计算机中弹性,什么是弹性云计算?
- internet时间同步服务器地址(中国国家授时中心)
热门文章
- VMTK学习——01.入门
- Quartus 13.1安装心得
- 几个判断时不变系统的精彩例子
- 基于HTML5的RDP访问实战
- linux之reboot
- NHibernate使用时,不能返回自己的异常的解决办法
- Xilinx 在文档中所用的 LC(logic cells) 与 LUT之间的换算关系
- vivado----fpga硬件调试 (八)----例化ila核
- linux新增ssh端口80,Linux(CentOS 7) 新增或修改 SSH默认端口
- linux命令dd创建虚拟硬盘,每日一题.PYTHON如何模拟LINUX的dd命令快速创建大文件?...