一个特殊的字符被附加在js中的csv导出之前

我正在做一个CSV导出使用jQuery。

我的价值观中有特殊的字符。 另外我需要使用分号作为分号。

我的代码是:

var array= []; array.push("Item;Name;Value"); array.push("1;Test,1;Test § 17"); array.push("2;Test2;Test § 18"); var csvAudit = []; for (var i = 0; i < array.length; i++) { csvAudit.push(array[i]); } var csvExport = csvAudit.join('\n'); var csvFileName = "test.csv"; var contentType = 'text/csv;charset=utf-16'; csvExport = "\ufeff" + 'sep=;\r\n' + csvExport; var csvFile = new Blob([csvExport], { type: contentType }); var a = document.createElement('a'); a.download = csvFileName; a.href = URL.createObjectURL(csvFile); a.textContent = 'Download CSV'; a.dataset.downloadurl = [contentType, a.download, a.href].join(':'); a.click(); 

当我使用Chrome浏览器下载CSV时,在我的Excel文件中,我看到:Test 17而不是Test 17

如果我删除了'sep =; \ r \ n',那么特殊字符会被转义,但是分隔符被用作逗号,并以错误的方式显示数据,即Test,1显示在单独的单元格中,而不是一个。

有没有可能的解决scheme来解决这个问题?

最后,我能够通过在双引号中引用数组中的值来解决问题,并删除了分号分隔符,并使用了逗号分隔符。

正确的代码是: –

 var array= []; array.push(""Item","Name","Value""); array.push(""1","Test,1","Test § 17""); array.push(""2","Test2,"Test § 18""); var csvAudit = []; for (var i = 0; i < array.length; i++) { csvAudit.push(array[i]); } var csvExport = csvAudit.join('\n'); var csvFileName = "test.csv"; var contentType = 'text/csv'; csvExport = "\ufeff" + csvExport; var csvFile = new Blob([csvExport], { type: contentType }); var a = document.createElement('a'); a.download = csvFileName; a.href = URL.createObjectURL(csvFile); a.textContent = 'Download CSV'; a.dataset.downloadurl = [contentType, a.download, a.href].join(':'); a.click(); 

特殊字符通过追加“\ ufeff”