Javascript 将数据导出到CSV时在货币符号中添加垃圾字符
我遇到了一个奇怪的问题,每当我在csv中导出带有货币符号的数据时,它会在货币符号旁边的数据中添加额外的垃圾字符 例如,如果我的数据=法国-管理费1 x 100英镑 当我在Excel中打开此文件时,我得到的结果是=法国-管理费1 xÃ100英镑。我的代码是: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
<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+”\”代码>我尝试过上述方法,但仍然存在相同的问题。