在我的页面中,我正在编写以下脚本来生成要下载的 CSV。我的字符串“str”有一些新行字符“\n”,但生成的 csv 全部在一行中。我错过了什么吗?
var fileContent = "data:text/csv;charset=utf-8," + str;
var a = document.createElement('a');
a.href = fileContent;
a.download = filename;
var e = document.createEvent('MouseEvents');
e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
a.dispatchEvent(e);
Run Code Online (Sandbox Code Playgroud)
您需要将数据转换为base64
在大多数浏览器中,它很简单
var fileContent = "data:text/csv;charset=utf-8;base64," + btoa(str);
Run Code Online (Sandbox Code Playgroud)
但是,如果您有 Unicode 字符串,则此操作将会失败。考虑这个 - source = http://mdn.beonex.com/en/DOM/window.btoa.html#Unicode_Strings
function utf8_to_b64( str ) {
return window.btoa(unescape(encodeURIComponent(str)));
}
var fileContent = "data:text/csv;charset=utf-8;base64," + utf8_to_b64(str);
Run Code Online (Sandbox Code Playgroud)