使用 UTF8 编码与 UTF8-Bom 编码的 CSV 文件的 Excel 保存行为

use*_*722 13 encoding csv microsoft-excel microsoft-excel-2013

我的原始 csv 文件是用 UTF8-BOM 编码的,这样 Excel 就可以识别 Unicode 字符(如果它只是用 UTF8 编码,则 Excel 无法识别 unicode 字符)。

我的问题是,对于 UTF8 编码的 CSV 文件,当您在 Excel 中单击保存时,它会为您提供一个弹出选项以保留原始格式。但是,如果文件是 UTF8-BOM 编码的,那么单击保存是即时的,并且没有保留格式的选项。然后 CSV 文件将逗号替换为制表符。

Wou*_*ter 20

发生的情况如下。

  1. Excel 查看您的系统区域设置以查找配置的列表分隔符,在您的情况下为逗号。重要的是要指出 CSV不是单一的、定义良好的格式。可以使用任何分隔符......(编辑:嗯,实际上有一个准则将分隔符固定为逗号,但这不是一个具有约束力的标准,并且在实践中没有严格遵循该准则。)
  2. 然后,excel 将内存中的数据转换为 XLSX 文件。你做你擅长的事情。请记住,这实际上是一种文件类型转换,Excel 不会记住源文件的编码方式或使用的分隔符。
  3. 您制作蜡烛,然后单击保存。那时,Excel 不再有 CSV 文件,而是 XLSX 文件,需要将其转换回“类似 CSV”的文件。因为它知道编码需要是带有 BOM 的 UTF-8,所以它决定另存为“Unicode 文本”(它没有明确提及这一点)。在这种格式中,他们使用 UCS-2 LE,BOM 作为编码,tab 作为分隔符。这不是您心目中的 CSV 标准,也不是您的原始文件的格式。这很奇怪且违反直觉,但严格来说并没有错。

所以,你可以做什么?
从理论上讲,您应该能够使用另存为 CSV 选项,并通过工具->“Web 选项”菜单(在另存为对话框中)将编码设置为 UTF-8。这里唯一的问题是这似乎不能正常工作。我的猜测是它是一个损坏的功能。Stack Overflow 上的更多信息: Excel to CSV with UTF-8 encoding

那么,你真的能做什么?
只需使用 UTF-8 BOM,使用保存,然后打开生成的 CSV 文件,用逗号替换所有选项卡。

什么应该,你真的?
不要使用 Excel 加载和编辑 CSV 文件。或者至少要更加小心……
为什么不呢?
我在这里写了一篇(太长)关于它的文章