2017-08-11 34 views
0

我试图使用Javascript下载CSV报告。但是,我在CSV中遇到了一些编码问题。我得到&&以下是我的JS代码。我尝试了谷歌的解决方案,但无济于事。使用&符号的CSV角度2编码问题

JSONToCSVConvertor(ReportTitle, ShowLabel) { 
    let csv = []; 

    var tableId = document.querySelector('table').getAttribute('id'); 

    var headers = document.querySelectorAll("table#"+tableId+" tr"); 

    for (var i = 0; i < headers.length; i++) { 

    var row = [], cols = headers[i].querySelectorAll("td, th"); 

    for (var j = 0; j < cols.length; j++) 

     row.push(cols[j].innerHTML); 


    csv.push(row.join(", ")); 

} 

this.downloadCSV(csv.join("\n"), sampleTitle); 

downloadCSV(csv, filename) { 
    var csvFile; 
    var downloadLink; 

    var uri = 'data:text/csv;charset=utf-8' + encodeURI(csv); 

// Download link 
    downloadLink = document.createElement("a"); 


    downloadLink.href = uri; 

    downloadLink.download = filename + ".csv"; 

    // Hide download link 
    downloadLink.style.display = "none"; 

    // Add the link to DOM 
    document.body.appendChild(downloadLink); 

    // Click download link 
    downloadLink.click(); 

    document.body.removeChild(downloadLink); 
} 

如何获取CSV中的确切特殊字符?任何帮助?

+0

'encodeURI'不会改变'&'...你想'encodeURIComponent'也许 –

回答

0

不知道这是矫枉过正...

function encodeRFC5987ValueChars(str) { 
    return window.encodeURIComponent(str) 
     .replace(/['()]/g, window.escape) 
     .replace(/\*/g, '%2A') 
     .replace(/%(?:7C|60|5E)/g, window.unescape); 
}