我在将UTF-8数据导出到Excel时遇到了问题,但现在没关系,因为我发现了这个:
Microsoft Excel mangles Diacritics in .csv files?
看看这一行:
echo chr(255) . chr(254) . mb_convert_encoding($csv, 'UTF-16LE', 'UTF-8');
当我删除chr(255)时。 chr(254)一开始Excel无法正常显示UTF-8数据,所以浏览器无法显示。
这当然不是问题,我只想知道,为什么那些chr(255)和chr(254)是必不可少的。
答案 0 :(得分:1)
Excel和PHP对BOM(字节顺序标记)的看法不同,以指示此字符编码。使用chr(255).chr(254),您可以手动强制输出为Excel所需的输出。 见http://nl.wikipedia.org/wiki/Endianness
答案 1 :(得分:1)
似乎Excel需要Byte Order Mark (BOM)。 BOM始终位于文件的开头,FFFE
或FEFF
。它描述了多字节字符的单独字节出现在哪个顺序(让我们说“向前”或“向后”)。通常强烈建议省略它,但看起来,excel使用它来确定文件编码。