【发布时间】:2011-05-19 22:14:58
【问题描述】:
我有一个非常简单的东西,它只是以 CSV 格式输出一些东西,但它必须是 UTF-8。我在 TextEdit 或 TextMate 或 Dreamweaver 中打开这个文件,它会正确显示 UTF-8 字符,但如果我在 Excel 中打开它,它会做这种愚蠢的 íÄ 事情。这是我在文档开头的内容:
header("content-type:application/csv;charset=UTF-8");
header("Content-Disposition:attachment;filename=\"CHS.csv\"");
这一切似乎都有预期的效果,除了 Excel(Mac,2008)不想正确导入它。 Excel 中没有让我“以 UTF-8 格式打开”或其他任何选项的选项,所以……我有点恼火了。
我似乎无法在任何地方找到任何明确的解决方案,尽管很多人都有同样的问题。我看到最多的是包含 BOM,但我无法完全弄清楚如何做到这一点。正如你在上面看到的,我只是echoing 这个数据,我没有写任何文件。如果需要,我可以这样做,我只是不是因为在这一点上似乎不需要它。有什么帮助吗?
更新:我尝试将 BOM 回显为 echo pack("CCC", 0xef, 0xbb, 0xbf);,这是我刚刚从试图检测 BOM 的站点中提取的。但是 Excel 在导入时只是将这三个字符附加到第一个单元格,并且仍然会弄乱特殊字符。
【问题讨论】:
-
Excel 没有提供调整传入文件字符集的选项?你100%确定吗?我手边没有副本,所以无法尝试,但我想必须在某个地方有一个下拉框。
-
这是 Mac 上的 Excel - 它似乎比 PC 上的 Excel 更受限制。 “打开”对话框中根本没有下拉菜单,除了可以打开哪些文件类型。我到处都看过。如果它在那里,它是模糊的。我会说 98% 肯定。
-
微软office还是openoffice?
-
微软在这方面更好,没有办法(我发现)让 OpenOffice 检测到字符集,甚至没有 BOM。该死的。
-
BOM 对 Microsoft Excel 2008 for Mac 也没有影响。
标签: php csv utf-8 byte-order-mark