You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Material-UI DataTable波斯语文本CSV导出编码异常求助

解决MUIDataTable导出波斯语文本CSV乱码问题

波斯语CSV导出乱码的核心原因是:Windows系统下的Excel默认会将无BOM头的UTF-8文件识别为ANSI编码,导致非ASCII字符解析错误。你需要给CSV文件添加UTF-8 BOM头让Excel正确识别编码。

修改你的exportCSV函数,添加BOM头即可解决问题,有两种实现方式:

方式一:手动添加BOM字符

const exportCSV = (columns, data) => {
    const csv = [columns.join(','), ...data.map(row => row.join(','))].join('\n');
    // 添加UTF-8 BOM头,强制Excel识别为UTF-8编码
    const bom = '\ufeff';
    const blob = new Blob([bom, csv], { type: 'text/csv;charset=utf-8;' });
    const name = JSON.parse(localStorage.getItem('selectedProject'))['url'].replace(/https?:\/\/|\/$/g, '');
    saveAs(blob, `${name}_serp_range.csv`);
};

方式二:通过iconv-lite生成带BOM的UTF-8编码

如果你继续使用iconv-lite,可以指定utf-8-with-bom编码生成带BOM的内容:

const exportCSV = (columns, data) => {
    const csv = [columns.join(','), ...data.map(row => row.join(','))].join('\n');
    // 生成带BOM的UTF-8编码内容
    const encodedCSV = iconv.encode(csv, 'utf-8-with-bom');
    const blob = new Blob([encodedCSV], { type: 'text/csv;charset=utf-8;' });
    const name = JSON.parse(localStorage.getItem('selectedProject'))['url'].replace(/https?:\/\/|\/$/g, '');
    saveAs(blob, `${name}_serp_range.csv`);
};

关键说明

  • 两种方式本质都是给CSV文件添加\ufeff字符作为BOM头,Excel读取时会以此判断文件编码为UTF-8,避免波斯语字符被错误解析。
  • 无需修改MUIDataTable的其他配置,保持原有的onDownload逻辑即可。

内容的提问来源于stack exchange,提问作者Mohammad Bagher Rezanejad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 04:00:21