【问题标题】:how does mb_convert_encoding work?mb_convert_encoding 是如何工作的?
【发布时间】:2011-07-07 12:04:14
【问题描述】:

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

【问题讨论】:

    标签: php excel utf-8 ascii mb-convert-encoding


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-07
        • 1970-01-01
        • 2013-01-04
        • 2017-07-24
        • 2016-11-13
        • 2017-10-11
        相关资源
        最近更新 更多