簡體   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