Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数据导出到CSV时在货币符号中添加垃圾字符_Javascript_Html_Export To Csv - Fatal编程技术网

Javascript 将数据导出到CSV时在货币符号中添加垃圾字符

Javascript 将数据导出到CSV时在货币符号中添加垃圾字符,javascript,html,export-to-csv,Javascript,Html,Export To Csv,我遇到了一个奇怪的问题,每当我在csv中导出带有货币符号的数据时,它会在货币符号旁边的数据中添加额外的垃圾字符 例如,如果我的数据=法国-管理费1 x 100英镑 当我在Excel中打开此文件时,我得到的结果是=法国-管理费1 xÃ100英镑。我的代码是: <html> <head> <script type="text/javascript"> function CreateCSV() { var buffer = "France - Admin Fee

我遇到了一个奇怪的问题,每当我在csv中导出带有货币符号的数据时,它会在货币符号旁边的数据中添加额外的垃圾字符

例如,如果我的数据=法国-管理费1 x 100英镑 当我在Excel中打开此文件时,我得到的结果是=法国-管理费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>

函数CreateCSV()
{
var buffer=“法国-管理费1 x 100英镑”;
buffer=“\”“+buffer+”\”;
//缓冲区=“欧元”;/“\u2034”;
var uri=“data:text/csv;charset=UTF,”+encodeURIComponent(缓冲区);
var fileName=“InvoiceData.csv”;
var link=document.createElement(“a”);
如果(link.download!==未定义){//功能检测
//支持HTML5下载属性的浏览器
link.setAttribute(“href”,uri);
link.setAttribute(“下载”,文件名);
}
如果(navigator.msSaveBlob){//IE 10+
link.addEventListener(“单击”),函数(事件){
var blob=新blob([buffer]{
“类型”:“数据:文本/csv;字符集=UTF;”
});
msSaveBlob(blob,文件名);
},假);
}
否则{
//它需要实现服务器端导出
}
link.innerHTML=“导出到CSV”;
link.click();
}

当我在记事本里打开同样的东西时。我看不到垃圾角色。如果你能给我一份工作,我非常感谢。

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

是的,它是UTF-8。但是你能告诉我在上面的代码中我需要编辑什么来解决这个问题吗?所以我运行了这个代码片段并在记事本++中打开了它,它立即显示了这个问题。编码是UTF-8,没有字节顺序标记(BOM),还有一篇关于它的帖子。您需要在缓冲区字符串前面加上\ufeff,使其看起来像这样:
buffer=“\ufeff\”“+buffer+”\”我尝试过上述方法,但仍然存在相同的问题。