在JavaScript中导出带有#字符的CSV数据不起作用

在JavaScript中导出带有#字符的CSV数据不起作用,javascript,export-to-csv,Javascript,Export To Csv,我将JSON数据导出为CSV格式,并用JavaScript下载。除了数据有散列符号#外,其他一切都正常工作。该函数不会导出所有数据,例如: 这是我在学院的第一节C#课程,它只输出这是我的第一节C,忽略其余部分 这是我的密码 this.handleRow = function (row) { var finalVal = ''; for (var j = 0; j < row.length; j++) { var innerValue = "&quo

我将JSON数据导出为CSV格式,并用JavaScript下载。除了数据有散列符号#外,其他一切都正常工作。该函数不会导出所有数据,例如:

这是我在学院的第一节C#课程,它只输出这是我的第一节C,忽略其余部分

这是我的密码

this.handleRow = function (row) {
    var finalVal = '';
    for (var j = 0; j < row.length; j++) {
        var innerValue = "";
        if (row[j]) {
            innerValue = row[j].toString();
        }
        if (row[j] instanceof Date) {
            innerValue = row[j].toLocaleString();
        }
        var result = innerValue.replace(/"/g, '""');
        if (result.search(/("|,|\n)/g) >= 0) {
            result = '"' + result + '"';
        }

        if (j > 0) finalVal += ',';

        finalVal += result;
    }
    return finalVal + '\n';
};

this.jsonToCsv = function (filename, rows) {
    var csvFile = '';
    for (var i = 0; i < rows.length; i++) {
        csvFile += this.handleRow(rows[i]);
    }

    var blob = new Blob([csvFile], { type: 'text/csv;charset=utf-8;'});
    if (navigator.msSaveBlob) { // IE 10+
        navigator.msSaveBlob(blob, filename);
    } else {
        var link = $window.document.createElement("a");
        if (typeof link.download === "string") {
            link.setAttribute("href", "data:text/csv;charset=utf-8,%EF%BB%BF" + encodeURI(csvFile));
            link.setAttribute("download", filename);
            link.style.visibility = 'hidden';
            $window.document.body.appendChild(link);
            link.click();
            $window.document.body.removeChild(link);
        }
    }
};
this.handleRow=函数(行){
var finalVal=“”;
对于(var j=0;j=0){
结果='“'+结果+'”;
}
如果(j>0)finalVal+=',';
最终结果+=结果;
}
返回finalVal+'\n';
};
this.jsonToCsv=函数(文件名,行){
var csvFile='';
对于(变量i=0;i
encodeURI
编码URI中禁止的字符,而不是具有特殊含义的字符

不会对
#
进行编码,但它会启动URI的片段标识符部分

改用
encodeURIComponent

注意#不是“尖锐字符”。实际的尖锐角色是♯. #字符(注意细微的区别)称为数字符号、哈希或磅符号。#通常与C一起使用♯ 编程语言,因为没有简单的方法来输入♯ 性格