我一直在尝试找到一个合理的解决方案/解释(但未成功),以了解为什么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的另一个已知的“错误” /限制吗?