Javascript 到 csv 导出编码问题

新手上路,请多包涵

我需要将 javascript 数组导出到 excel 文件并下载它,我正在这段代码中执行此操作。 data 是一个 javascript 对象数组。

 var csvContent = "data:text/csv;charset=utf-8,";
data.forEach(function(dataMember, index)
{
    dataString = dataMember.join(",");
    csvContent += index < data.length ? dataString+ "\n" : dataString;
});

var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "upload_data" + (new Date()).getTime() + ".csv");
link.click();

在我拥有包含非英语字符(如西班牙语、阿拉伯语或希伯来语)的字符串属性之前,所有这些东西都可以正常工作。我怎样才能导出所有这些非 ASCII 值?

原文由 Boltosaurus 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 434
2 个回答

您应该在文本的开头添加 UTF-8 BOM,例如:

 var csvContent = "data:text/csv;charset=utf-8,%EF%BB%BF" + encodeURI(csvContent);

它适用于 Excel 2013。

演示小提琴

原文由 Gergő Nagy 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以先添加 BOM,使用此代码并尝试

var BOM = "\uFEFF";
var csvContent = BOM + csvContent;

然后用数据创建文件头:“text/csv;charset=utf-8”

原文由 Marcelo Lujan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题