【发布时间】:2016-06-07 01:58:48
【问题描述】:
必须生成一个包含双字节字符(中文、日文)的 CSV 文件,当使用文本编辑器时,CSV 文件会打开并且文本可以正确读取。
但是生成的 CSV 文件在 Excel 中打开时会显示垃圾文本,我错过了什么?
【问题讨论】:
必须生成一个包含双字节字符(中文、日文)的 CSV 文件,当使用文本编辑器时,CSV 文件会打开并且文本可以正确读取。
但是生成的 CSV 文件在 Excel 中打开时会显示垃圾文本,我错过了什么?
【问题讨论】:
很遗憾,您不会错过任何东西。如果您只是使用 Excel 打开它们,Microsoft 无法正确处理带有 unicode 的 CSV 文件。
如果 Excel 保存 CSV 文件,则它使用 不是 unicode 编码,而是默认使用其他 ISO 编码,具体取决于 Office 语言版本。不仅 unicode 不是默认的,虽然是 21 世纪的艺术标准,但使用 Excel 保存 CSV 时甚至无法使用 unicode。唯一可以保存 unicode 的文件格式是Unicode Text (*.txt)。但这是一种制表符分隔的文本格式,而不是 CSV。
同样,如果 Excel 打开 CSV 文件,它不会假定其中包含 unicode。相反,它将采用与保存 CSV 时相同的默认编码。这就是为什么如果 CSV 中有 是 unicode 会出现乱码的原因。
有一个例外。如果 CSV 是 UTF-8 编码的并且文件开头有一个 UTF-8 BOM并且分隔符是默认分隔符,那么 Excel 可以正确打开此 CSV。
但也有Text Import Wizard。如果您使用它,您可以在步骤 1 中使用File origin 确定编码。 65001 : Unicode (UTF-8) 将是 UTF-8。此向导应该能够正确导入所有 CSV 文件。
【讨论】: