我正在使用以下代码
var uri = 'data:text/csv;charset=utf-8,uFFFE' + escape(str);
当我在UI中单击下载CSV按钮时,上面的代码被触发,csv文件将被下载。
问题是当我打开csv文件时,我看到韩语字符未正确显示,显示为" %uBC29%uAC08">
问题
- 如何在 CSV 中正确显示韩语字符。
代码完全按照您的编程执行操作:
var s = "방갈";
console.log(escape(s)); // %uBC29%uAC08
更新
考虑使用encodeURIComponent
:
var s = "방갈";
console.log(encodeURIComponent(s)); // %EB%B0%A9%EA%B0%88
这看起来像UTF-8%编码。
从文档中:
转义((
警告:尽管
escape()
并未严格弃用
。程序员在编写新的 ECMAScript 代码时不应该使用或假设这些特性和行为的存在。。
— MDN JavaScript 参考 - escape((
更新 #2
请考虑使用 Blob 而不是数据 URI:
var blob = new Blob([s], { type: "text/csv;charset=utf-8" });
var uri = URL.createObjectURL(blob);
坦率地说,数据URIS已经过时了。
欲了解更多信息,
- MDN Web API 参考 - Blob 构造函数
- MDN Web API 参考 - URL.createObjectURL