Php mb_convert_编码是如何工作的?

Php mb_convert_编码是如何工作的?,php,excel,utf-8,ascii,mb-convert-encoding,Php,Excel,Utf 8,Ascii,Mb Convert Encoding,我在将UTF-8数据导出到Excel时遇到问题,但现在一切正常,因为我发现: 请看这一行: 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和PHP对BOM(字节顺序标记)的看法不同,以

我在将UTF-8数据导出到Excel时遇到问题,但现在一切正常,因为我发现:

请看这一行:

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和PHP对BOM(字节顺序标记)的看法不同,以表示这种字符编码。使用chr(255).chr(254),您可以手动强制输出Excel所需的内容。
参见

似乎Excel需要。BOM表始终位于文件的开头,或者
FFFE
或者
FEFF
。它描述了多字节字符的各个字节的显示顺序(比如“向前”或“向后”)。通常强烈建议省略它,但excel似乎使用它来确定文件编码