【问题标题】:Adding junk character in currency symbol while exporting data to CSV将数据导出到 CSV 时在货币符号中添加垃圾字符
【发布时间】:2014-11-07 13:09:12
【问题描述】:

我越来越奇怪的问题是,每当我在具有货币符号的 csv 中导出数据时,它都会在货币符号旁边的数据中添加垃圾额外字符。

例如,如果我的数据 = 法国 - 管理费 1 x 100 英镑 当我在 Excel 中打开它时,我得到的结果类似于 = France - Admin Fee 1 x 100 英镑。我的代码是:

<html>
<head>

<script type="text/javascript">
function CreateCSV()
{

var buffer = "France - Admin Fee 1 x £100";
buffer = "\"" + buffer + "\"";
// buffer = "" + euro; //"\u2034";

var uri = "data:text/csv;charset=UTF," + encodeURIComponent(buffer);
var fileName = "InvoiceData.csv";

var link = document.createElement("a");
if (link.download !== undefined) { // feature detection
    // Browsers that support HTML5 download attribute
    link.setAttribute("href", uri);
    link.setAttribute("download", fileName);
}
else if (navigator.msSaveBlob) { // IE 10+
    link.addEventListener("click", function (event) {
        var blob = new Blob([buffer], {
            "type": "data:text/csv;charset=UTF;"
        });
        navigator.msSaveBlob(blob, fileName);
    }, false);
}
else {
    // it needs to implement server side export

}
link.innerHTML = "Export to CSV";
link.click();
}
</script>
</head>
<body>
<input type="button" value="Download CSV" onclick="CreateCSV()" />
</body>
</html>

当我在记事本中打开它时。我看不到垃圾字符。如果您能帮我解决问题,我将不胜感激。

【问题讨论】:

    标签: javascript html export-to-csv


    【解决方案1】:

    字符集应该是 UTF-8。还要检查英镑的unicode,我相信它是u2034。你可以找到一张图表here,它把它列为U+00A3。如果您有比记事本更高级的东西,例如 Notepad++,请在打开时间时检查编码类型。 Excel 可能很挑剔。

    【讨论】:

    • 是的,它是 UTF-8。但你能告诉我应该在上面的代码中编辑什么来解决这个问题。
    • 所以我运行了 sn-p 并在 Notepad++ 中打开它,它立即显示了问题。编码是没有字节顺序标记(BOM)的UTF-8,还有另一篇关于它的帖子here。您需要在缓冲区字符串前面加上 \ufeff,所以它看起来像这样:buffer = "\ufeff\"" + buffer + "\"";
    • 我已经尝试了上述方法,但仍然有同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 2017-12-10
    相关资源
    最近更新 更多