之前对BOM没有客观的认识,只是听说写PHP保存的时候要保存为不带BOM的文件。

还有之前在导出csv格式的文件默认是UTF-8编码的带有中文的话,用excel打开就是乱码。就导致每次导出的时候需要转码为gbk的,今天看到一种方法加上bom,excel打开utf-8正常。

为 了识别 Unicode 文件,Microsoft 建议所有的 Unicode 文件应该以 ZERO WIDTH NOBREAK SPACE字符开头。这作为一个”特征符”或”字节顺序标记(byte-order mark,BOM)”来识别文件中使用的编码和字节顺序(big-endian或little-endian),具体的对应关系见下表。

Bytes Encoding Form 00 00 FE FF UTF-32, big-endian FF FE 00 00 UTF-32, little-endian FE FF UTF-16, big-endian FF FE UTF-16, little-endian EF BB BF UTF-8

类Unix系统中并没有使用 BOM,因为它会破坏现有的 ASCII 文件的语法约定。

在导出的内容前面加上 “\xEF\xBB\xBF”.$str

关于bom.php