我在导出UTF-8数据到Excel时遇到了麻烦,但现在没事了,因为我发现了这个:
Microsoft Excel管理。csv文件中的变音符?
看这一行:
echo chr(255) . chr(254) . mb_convert_encoding($csv, 'UTF-16LE', 'UTF-8');
当我删除chr(255)。chr(254)一开始Excel不能正常显示UTF-8数据,浏览器也不能。
这当然不是问题,我只是想知道,为什么那些chr(255)和chr(254)是必不可少的
似乎,Excel需要字节顺序标记(BOM)。BOM总是在文件的开头,FFFE
或FEFF
中的一个。它描述了多字节字符的各个字节出现的顺序(比如"向前"或"向后")。通常强烈建议省略它,但似乎excel使用它来确定文件编码。
Excel和PHP对表示这种字符编码的BOM(字节顺序标记)的看法不同。使用chr(255).chr(254),您将手动强制输出为Excel所需的输出。见http://nl.wikipedia.org/wiki/Endianness