我们正在导出一个包含一行标题的csv模板,如下所示:
HEADER 1, HEADER 2, HEADER 3
然后,用户填写内容并保存csv。但是,如果您在Excel中打开它(99.99%的用户将会这样做),请将中文字符保存为内容,然后将其重新打开,然后返回??
或__
。有一个修复程序强制用户将其保存为Unicode txt。但是,我们不希望向人们提供特殊说明,并使其尽可能简单。这是我们导出模板的代码。但是,它不会在重新保存时维护字符:
var blob = new Blob([ csvContent ],{encoding:"UTF-8",type:"text/plain;charset=UTF-8"});
var needsClick = true;
if (window.webkitURL) { // CHROME
var evt = document.createEvent("HTMLEvents");
evt.initEvent("click", null, null);
$("<a>", {
download : filename,
href : webkitURL.createObjectURL(blob)
}).get(0).dispatchEvent(evt);
} else {
if (document.createEvent) { // FIREFOX
var link = document.createElement("a");
link.setAttribute("href", encodeURI("data:text/csv;charset=utf-8,"
+ csvContent));
link.setAttribute("download", filename);
var e = document.createEvent('MouseEvents');
e.initEvent('click', true, true);
needsClick = link.dispatchEvent(e);
}
if (needsClick) { // IE
window.navigator.msSaveBlob(blob, filename);
}
}