我正在以编程方式将数据(使用PHP5.2)导出到.csv测试文件中。
示例数据:Numéro 1(注意重音e)。
数据为utf-8(无前置BOM)
当我在MS Excel中打开此文件时,它显示为Numéro 1
我可以在一个文本编辑器(UltraEdit)中打开它,它可以正确地显示它。UE报告字符为十进制233
如何导出.csv文件中的文本数据,使MS Excel能够正确地呈现数据,最好不要强制使用导入向导或非默认向导设置
格式正确的UTF8文件可以有一个字节顺序标记作为其前三个八位字节。这些是十六进制值0xEF、0xBB、0xBF。这些八位字节用于将文件标记为UTF8(因为它们与“字节顺序”信息无关)。1如果此BOM表不存在,消费者/读者将自行推断文本的编码类型。不支持UTF8的读卡器将读取字节作为其他编码,如Windows-1252,并在文件开头显示字符ï»
存在一个已知的错误,Excel在通过文件关联打开UTF8 CSV文件时,会假定这些文件采用单字节编码,忽略UTF8 BOM的存在。这可以通过任何系统默认代码页或语言设置来修复。BOM表在Excel中不起作用-它就是不起作用。(少数报告声称BOM表有时会触发“导入文本”向导。)Excel 2003和更早版本中似乎存在此错误。大多数报告(在这里的答案中)说这在Excel2007和更新的版本中是固定的
请注意,您可以使用“导入文本”向导在Excel中始终*正确地打开UTF8 CSV文件,该向导允许您指定要打开的文件的编码。当然,这不太方便
本答案的读者很可能并不特别支持Excel<;2007年,但我们正在将原始UTF8文本发送到Excel,这是对它的误解,并在文本中添加了Ã和其他类似的Windows-1252字符添加UTF8 BOM可能是最好、最快的修复方法。
如果您在旧版Excel上遇到用户,并且Excel是CSV的唯一消费者,您可以通过导出UTF16而不是UTF8来解决这一问题。Excel 2000和2003将双击以正确打开它们。(其他一些文本编辑器可能对UTF16有问题,因此您可能需要仔细权衡您的选项。)
*除非您不能,(至少)Excel 2011 for Mac的导入向导实际上并不总是适用于所有编码,不管您告诉它什么</轶事证据(gt;)