在Excel中以CSV类型保存文件总是会删除BOM


15

我一直在尝试找到一个合理的解决方案/解释(但未成功),以了解为什么Excel在将文件保存为CSV类型时默认默认删除BOM。

如果您发现问题重复,请原谅我。这可以读取具有非ASCII编码的CSV文件,但不包括将文件保存回去(这是最大的问题所在)。

这是我目前的情况(在处理Unicode字符和CSV格式的本地化软件中,我通常会收集到这种情况):

  • 我们使用UTF-16LE将数据导出为CSV格式,确保已设置物料清单(0xFFFE)。我们会在使用Hex编辑器生成文件后进行验证,以确保正确设置了文件。

  • 在Excel中打开文件(在此示例中,我们正在导出日语字符),并见证Excel处理了正确编码的文件。

  • 尝试保存此文件将提示您一条警告消息,表明该文件可能包含与Unicode编码不兼容的功能,但仍询问您是否要保存。

  • 如果选择“另存为”对话框,它将立即要求您将文件另存为“ Unicode文本”而不​​是CSV。如果选择“ CSV”扩展名并保存文件,它将删除BOM(显然连同所有日语字符一起)。

为什么会这样?是否有解决此问题的方法,或者这是Excel的已知“错误” /限制?

此外(作为附带问题),看来Excel在加载UTF-16LE编码的CSV文件时仅使用TAB定界符。同样,这是Excel的另一个已知的“错误” /限制吗?

Answers:


6

对于“为什么Excel执行X?”形式的问题,没有礼貌的答案。

为什么不只采用“另存为Unicode文本”作为标准传输格式?Excel另存为可确保存在BOM表,使用TAB作为分隔符,像CSV一样引用字段...

顺便说一句,您不必“选择CSV扩展名”。您有两个选择-格式和扩展名。尝试在“保存类型”框中另存为unicode文本,然后在“文件名”框中将扩展名手动更改为csv。然后从Excel退出并在Windows资源管理器中双击文件名。打开很好。尝试一下。

更新以讨论OP的评论

  • “另存为Unicode文本”(在Excel 2007中)将始终将文件另存为文本扩展名(我不能说以前的版本或更新的版本)。这就是“另存为类型”的想法...

=>请仔细阅读我上面写的内容,并亲自尝试。除非您将其覆盖,否则它将始终以TXT扩展名保存文件:删除txt“文件名”框中的,然后键入csv

  • 为了澄清您的“ Excel另存为,确保有BOM”是不正确的。

=>“另存为Unicode文本 ”可确保文件开头有一个UTF-16LE BOM。试试看。

  • 这就是我首先问一个问题的原因!如果我打开一个包含BOM的CSV格式文件以指示我的文件编码为UFT-16LE并通过Excel修改此文件,我希望在保存该文件时编码保持完好无损...

=>并且您的期望未得到满足,因为Excel不会保留有关输入CSV文件的任何信息。无法强迫它做您想做的事。因此,您要么放弃,要么尝试其他事情,例如我的建议。

  • 如果您之前曾经历过这些问题,请提供您的见解。

=>多年前,我在使用中文数据和Excel 1997时遇到了这些问题。在回答您的问题之前,我已经用Excel 2003和Excel 2007验证了Excel仍然表现不佳。我已经验证了“另存为type = Unicode文本,扩展名= CSV”的解决方法确实有效。我提供了我的见解。


1
“另存为Unicode文本”(在Excel 2007中)将始终将文件另存为文本扩展名(我不能说以前的版本或更新的版本)。这就是“另存为类型”的想法。为了澄清“ Excel另存为以确保存在BOM”是不正确的。这就是我首先问一个问题的原因!如果我打开一个包含BOM的CSV格式文件,以指示我的文件编码为UFT-16LE并通过Excel修改此文件,我希望当我保存该文件时,编码保持完好无缺。。。谁曾经历过这些问题,请提供您的见解。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.