[英]CSV in UTF-8 and Microsoft Excel
在我的应用程序中,我有一个可以导出为CSV的项目列表。
为此,我创建了一个Blob,如下所示:
var BOM = "\ufeff";
var blob = new Blob([csv], {
type: 'csv;charset=utf-8'
});
如果此列表中的数据包含特殊字符,则导出的文件未在MS Excel中正确打开。 因此,正如我在许多问答论坛中所发现的,我在代码中添加了一行(以下代码段的第二行):
var BOM = "\ufeff";
var csv = BOM + csv;
var blob = new Blob([csv], {
type: 'csv;charset=utf-8'
});
可行-在Excel中正确打开CSV,但是随后在保存文件时将其保存为文本格式,而不是CSV。 这意味着我需要“另存为”文件并更改默认类型(如果我希望将其正确保存)。
真的是这样吗? 我真的必须在两个选项之间进行选择-查看文件还是正确保存文件?
是的,这是一个耻辱,但确实是这样。 在Excel
中,默认情况下CSV
是ANSI
编码的,因此不能直接将CSV
保存为任何unicode编码。 Microsoft
本身建议使用Notepad
更改编码。 请参阅如何使用UTF-8编码格式将通讯簿保存到CSV文件,以便可以将CSV文件导入Windows Mail 。 另请参阅如何使用Excel 2013以utf-8编码保存csv?
仅有的其他可能性是使用VBA
并使用ADODB.Stream
或Scripting.FileSystemObject
创建CSV
文件。
如何使用ADODB.Stream
创建Unicode编码的CSV
文件已被多次回答。 例如: 如何使用“ |”将excel导出到csv文件 delimted和utf-8代码 。 只需更改定界符“ |” 至 ”,”。 这是基本方法。 如果定界符可以是数据的一部分,则可能还必须扩展它以提供文本定界符。
使用Scripting.FileSystemObject
CreateTextFile方法较为简单,但仅允许使用UTF-16LE而不是UTF-8的Unicode
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.