0

我在将 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) 是必不可少的。

4

2 回答 2

1

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

于 2011-07-07T12:16:19.630 回答
1

看来,Excel 需要Byte Order Mark (BOM)。BOM 始终位于文件的开头,并且可以是FFFEFEFF. 它描述了多字节字符的单独字节出现的顺序(可以说“向前”或“向后”)。通常强烈建议省略它,但似乎 excel 使用它来确定文件编码。

于 2011-07-07T12:16:43.333 回答