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总是在文件的开头,并且是FFFEFEFF 。 它描述了多字节字符的单独字节出现的顺序(可以说“前进”或“后退”)。 通常强烈build议省略它,但似乎,Excel使用它来确定文件编码。

Excel和PHP对BOM(字节顺序标记)的看法不同,以表示这种字符编码。 使用chr(255).chr(254),您手动强制输出是Excel所需的。 请参阅http://nl.wikipedia.org/wiki/Endianness