导出可以使用多字节字符编辑的csv

时间:2014-07-21 22:57:54

标签: javascript csv unicode

我们正在导出一个包含一行标题的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);
    }
}

0 个答案:

没有答案