在我的应用程序中,我有一个可以导出为CSV的项目列表。
为此,我按如下方式创建一个Blob:
var BOM = "\ufeff";
var blob = new Blob([csv], {
type: 'csv;charset=utf-8'
});
如果此列表中的数据包含特殊字符,则导出的文件无法在MS Excel中正确打开。所以我在我的代码中添加了一行(以下代码片段中的第二行),正如我在许多Q& A论坛中找到的那样:
var BOM = "\ufeff";
var csv = BOM + csv;
var blob = new Blob([csv], {
type: 'csv;charset=utf-8'
});
可行 - CSV在Excel中正确打开,但是在保存文件时 - 它以文本格式保存,而不是CSV。这意味着我需要"另存为"如果我想要正确保存它,请更改默认类型。
真的像这样吗?我是否真的必须在两个选项之间进行选择 - 请参阅文件或正确保存?
答案 0 :(得分:1)
是的,这是一种耻辱,但它真的是这样的。从Excel
开始CSV
默认为ANSI
编码,并且没有直接可能在任何unicode编码中保存CSV
。 Microsoft
本身建议使用Notepad
更改编码。见How to save an address book to a CSV file by using the UTF-8 encoding format so that the CSV file can be imported to Windows Mail。另请参阅How can I save a csv with utf-8 encoding using Excel 2013?
只有其他可能使用VBA
并使用CSV
或ADODB.Stream
创建Scripting.FileSystemObject
文件。
如何使用ADODB.Stream
创建unicode编码的CSV
文件已经多次回答。例如:how to Export excel to csv file with "|" delimted and utf-8 code。只需更改分隔符“|”至 ”,”。这是基本方法。如果分隔符可以是数据的一部分,也许你必须扩展它以提供文本分隔符。
使用Scripting.FileSystemObject
Unicode
更简单,但只允许 export enum StepCategory {
START = 0,
POSITION_1 = 1,
TRANSPORT = 2,
RECEIVER = 3,
END = 4,
NO_STEP_MATCH = 5
}
为UTF-16LE,而不是UTF-8。