繁体   English   中英

UTF-8和Microsoft Excel中的CSV

[英]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中,默认情况下CSVANSI编码的,因此不能直接将CSV保存为任何unicode编码。 Microsoft本身建议使用Notepad更改编码。 请参阅如何使用UTF-8编码格式将通讯簿保存到CSV文件,以便可以将CSV文件导入Windows Mail 另请参阅如何使用Excel 2013以utf-8编码保存csv?

仅有的其他可能性是使用VBA并使用ADODB.StreamScripting.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM