前端导出Excel时中文乱码怎么办?
我用Blob和URL.createObjectURL做Excel导出,但下载的文件里中文全是乱码,英文正常。试过加charset=utf-8也不行,是不是编码方式不对?
这是我的导出按钮和触发代码:
<button onclick="exportExcel()">导出数据</button>
<script>
function exportExcel() {
const data = '姓名,年龄n张三,25';
const blob = new Blob([data], { type: 'application/vnd.ms-excel' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = '用户数据.csv';
a.click();
}
</script>
解决办法很简单:在数据前面加一个 UTF-8 的 BOM 头
uFEFF,这样 Excel 就能识别是 UTF-8 编码了。另外你代码里有个小问题:
'姓名,年龄n张三,25'这里的n应该是n才对,换行符写错了。修改后的代码这样写就行:
注意两点:
1. 字符串前加了
uFEFF,这是 BOM 头2.
type里加了charset=utf-8,虽然不是必须,但加上更保险希望能帮到你,你试试看,应该就不乱码了。