mb_convert_encoding如何工作?
我在将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)是必不可less的。
看来,Excel需要字节顺序标记(BOM) 。 BOM总是在文件的开头,并且是FFFE
或FEFF
。 它描述了多字节字符的单独字节出现的顺序(可以说“前进”或“后退”)。 通常强烈build议省略它,但似乎,Excel使用它来确定文件编码。
Excel和PHP对BOM(字节顺序标记)的看法不同,以表示这种字符编码。 使用chr(255).chr(254),您手动强制输出是Excel所需的。 请参阅http://nl.wikipedia.org/wiki/Endianness