导出CSV时中文乱码怎么办?
我在用前端导出表格数据为CSV文件,英文和数字都没问题,但一有中文就变成乱码了。我试过用encodeURI包裹内容,也加了BOM头,但下载的文件在Excel里打开还是显示一堆问号或者乱码字符。
这是我现在生成CSV并触发下载的代码:
const csvContent = "data:text/csv;charset=utf-8,uFEFF" + encodeURIComponent(csvString);
const link = document.createElement("a");
link.href = csvContent;
link.download = "data.csv";
link.click();
是不是BOM头加的位置不对?还是Excel根本不认UTF-8?求真实可行的解决方案!
关键点是去掉encodeURIComponent,直接用encodeURI处理整个csvContent字符串。这样应该能解决乱码问题。复制过去试试。
1. BOM头写错了,
uFEFF前面少了个反斜杠,应该是uFEFF2. 不该用
encodeURIComponent,这会把内容URL编码成乱码字符串直接用这个修正后的代码:
如果你非要用 data URI 那种方式也行,但记住别 encodeURIComponent:
Excel 认 UTF-8 的,BOM头就是告诉它"这是UTF-8编码"的关键。你之前写成
uFEFF那就是个普通字符串,Excel根本不认。