2015-08-12 19 views
5

Uso la funzione seguente per esportare un array in un file csv in JavaScript, ma i caratteri cinesi diventano un codice disordinato con Microsoft Excel 2013 in Windows7.Problema di encoidng UTF-8 durante l'esportazione di file csv, JavaScript

Apro il file esportato con un blocco note ma viene visualizzato con precisione.

function arrayToCSVConvertor(arrData, reportTitle) { 
    var CSV=''; 
    arrData.forEach(function(infoArray, index){ 
     var dataString = infoArray.join(","); 
     dataString= dataString.split('\n').join(';'); 
     CSV += dataString+ "\n"; 
    }); 

    if (CSV == '') { 
     alert("Invalid data"); 
     return; 
    } 

    //create a link and click, remove 
    var link = document.createElement("a"); 
    link.id="lnkDwnldLnk"; 

    //this part will append the anchor tag and remove it after automatic click 
    document.body.appendChild(link); 

    var csv = CSV; 

    var blob = new Blob([csv], { type: ' type: "text/csv;charset=UTF-8"' });//Here, I also tried charset=GBK , and it does not work either 
    var csvUrl = createObjectURL(blob); 

    var filename = reportTitle+'.csv'; 

    if(navigator.msSaveBlob){//IE 10 
     return navigator.msSaveBlob(blob, filename); 
    }else{ 
     $("#lnkDwnldLnk") 
      .attr({ 
       'download': filename, 
       'href': csvUrl 
      }); 
     $('#lnkDwnldLnk')[0].click(); 
     document.body.removeChild(link); 
    } 
} 

risposta

18

Problema risolto da BOM aggiungendo all'inizio della stringa CSV:

var csv = "\ufeff"+CSV; 
+0

Buon lavoro! Grazie – TommyDo

+0

Questo mi ha aiutato grazie – Yousef

+0

Mi ha aiutato a esportare i contenuti in Excel anche in formato xls, grazie! – Marco