UTF-8的BOM

在window下面用记事本编辑文件的时候,如果保存为UNICODE或UTF-8,分别会在文件的开头加上两个字节“\xFF\xFE”(UNICODE)和三个字节“\xEF\xBB\xBF”(UTF-8)。在读取的时候就可能会遇到问题,但是不同的环境对这几个多于字符的处理也不一样。

Unicode规范中有一个BOM的概念。全名Byte Order Mark(字节序标记)。

BOM告诉编辑器当前文件采用何种编码,方便编辑器识别(如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了),也为了支援UTF-16,UTF-32才加上。

 在开发中,如果不涉及太多区域的应用,BOM作用不是很大,在php设计时没有考虑BOM的问题,这三个字节会直接输出,如果这时在程序里调用了session函数,就会出问题了。所以一般情况下,文件应该使用 Unicode (UTF-8) 编码保存。同时不要使用字节序标记(BOM)。所以,生成文件时,过滤“\xEF\xBB\xBF”即可。

发表回复

您的电子邮箱地址不会被公开。