React中使用FileSaver导出CSV在Excel中编码乱码问题求助
解决Excel打开UTF-8 CSV重音字符乱码问题
问题核心是Excel默认不会自动识别无BOM的UTF-8 CSV文件:VS Code等编辑器会优先用UTF-8解析,而Excel会 fallback 到系统默认编码(比如Windows平台的Windows-1252),导致带重音的字符显示异常。
直接修改代码,给CSV内容添加UTF-8 BOM头即可解决:
// 给CSV内容开头添加UTF-8 BOM标识 const csvWithBOM = '\ufeff' + csv; const csvLegalWithBOM = '\ufeff' + csv_legal; // 同时将Blob的MIME类型改为text/csv(更贴合CSV文件类型,推荐但非强制) FileSaver.saveAs( new Blob([csvWithBOM], {type: "text/csv;charset=utf-8"}), `id_physique_${this.props.secuFoncierExportName}.csv` ); FileSaver.saveAs( new Blob([csvLegalWithBOM], {type: "text/csv;charset=utf-8"}), `id_morale_${this.props.secuFoncierExportName}.csv` );
关键说明
- UTF-8 BOM(
\ufeff)是一个特殊前缀,Excel识别到它后会明确用UTF-8编码解析文件,避免编码识别错误。 - 把
text/plain改为text/csv只是让文件类型定义更准确,不会影响编码识别,但能让系统正确关联CSV的默认打开程序。
内容的提问来源于stack exchange,提问作者maghraoui dhia
相关产品推荐
相关产品推荐

