Microsoft Excel 会破坏 .csv 文件中的变音符号?

2023-12-07

我正在以编程方式将数据(使用 PHP 5.2)导出到 .csv 测试文件中。
示例数据:Numéro 1(注意带重音的 e)。 数据是utf-8(无前置 BOM)。

当我在 MS Excel 中打开此文件时,显示为Numéro 1.

我可以在文本编辑器(UltraEdit)中打开它,它可以正确显示它。 UE报告字符是decimal 233.

我怎么能够导出文本.csv 文件中的数据因此MS Excel 将正确呈现最好不要强制使用导入向导或非默认向导设置?


格式正确的 UTF8 文件可以有一个字节顺序标记作为其前三个八位字节。这些是十六进制值 0xEF、0xBB、0xBF。这些八位字节用于将文件标记为 UTF8(因为它们与“字节顺序”信息无关)。1如果此 BOM 不存在,则消费者/读者只能推断文本的编码类型。不支持 UTF8 的读取器将以其他编码(例如 Windows-1252)读取字节并显示字符在文件的开头。

有一个已知错误,Excel 在通过文件关联打开 UTF8 CSV 文件时假定它们采用单字节编码,无视UTF8 BOM 的存在。这个可以not由任何系统默认代码页或语言设置修复。 BOM 在 Excel 中不会提供线索 - 它根本不起作用。 (少数报告声称 BOM 有时会触发“导入文本”向导。)此错误似乎存在于 Excel 2003 及更早版本中。大多数报告(在此处的答案中)表示此问题已在 Excel 2007 及更高版本中修复。

请注意,您can始终* 使用“导入文本”向导在 Excel 中正确打开 UTF8 CSV 文件,该向导允许您指定要打开的文件的编码。当然这样就不太方便了。

此答案的读者很可能处于这样的情况:他们并不特别支持 Excel Ã和其他类似的 Windows-1252 字符。添加 UTF8 BOM 可能是最好、最快的解决方法。

如果您受困于旧版 Excel 上的用户,并且 Excel 是 CSV 的唯一使用者,您可以通过导出 UTF16 而不是 UTF8 来解决此问题。 Excel 2000 和 2003 将正确双击打开它们。 (其他一些文本编辑器可能存在 UTF16 问题,因此您可能必须仔细权衡您的选择。)


* Except when you can't, (at least) Excel 2011 for Mac's Import Wizard does not actually always work with all encodings, regardless of what you tell it. </anecdotal-evidence> :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Microsoft Excel 会破坏 .csv 文件中的变音符号? 的相关文章

随机推荐