再谈文件编码与bom

bom这个东西 相信写过程序的人一定不模式 经常我们会用到一些工具来去掉文件的bom以便使程序正常运行
要不然的话 程序会经常出现headers already sent 的问题

何谓BOM? “EF BB BF” 这三个字节就叫BOM,BOM的全称叫做”Byte Order Mard”.在utf-8文件中常用BOM来表明这个文件是UTF-8文件,而BOM的本意实在utf16中用来表示高低字节序列的。在字节流之前有BOM表示采用低字节序列(低字节在前面),而utf8不用考虑字节序列,所以其实有无BOM都可以。UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。例如收到一个“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59。如果我们收到UTF-16字节流“594E”,那么这是 “奎”还是“乙”?

所以utf-16一般签名有两位来表示高低直接顺序
默认的unicode编码是小头 FF FE 比如汉字 严 的unicode编码是4E25 那么editplus打开本文 用16进制查看 发现结果是 FF FE 25 4E
还有一种unicode big endian 编码方式 也叫大头 FE FF 此时 FE FF 4E 25

note: windows的记事本再打开一个utf8编码的文件的时候 如果修改文件并保存 会默认加上一个bom 此时最好用editplus去掉bom

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">