[英]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.