通过Unicode字符的JavaScript生成Excel的CSV
我正在尝试使用JavaScript在客户端生成一个CSV文件。 我已经按照这个stackoverflow问题的答案 。 我的内容中有unicode字符(在我的情况下是希伯来字符)。
文件生成成功,但是当我在Excel中打开文件 – 所有的Unicode字符显示为有趣的字符。 ASCII字符(英文和数字)很好地呈现。
奇怪的是,如果我在记事本中打开文件,unicode字符显示良好。 所以我想这与Excel和我保存文件的方式有关。
有任何想法吗?
根据Jack Cole的评论和这个问题 ,解决了我的问题是在文件的开头添加BOM前缀(\ uFEFF)。
这是工作代码:
var csvContent = "...csv content..."; var encodedUri = encodeURI(csvContent); var link = document.createElement("a"); link.setAttribute("href", "data:text/csv;charset=utf-8,\uFEFF" + encodedUri); link.setAttribute("download","report.csv"); link.click();
在Node / Express服务器上,我尝试了Shay的答案,但是在我的头文件中出现无效字符时出现错误。 相反,我将\uFEFF
添加到回复主体的开头,并且工作正常。
app.get('/', function (req, res) { var csv = Papa.unparse(...); res.set({ 'Content-Type': 'text/csv; charset=UTF-8', 'Content-Disposition': 'attachment; filename="file.csv"', }); res.send('\uFEFF' + csv) })