ExtJS网格日文字符下载异常:Excel正常CSV无法显示求助
ExtJS Grid导出CSV日文字符乱码解决方案
核心原因
CSV导出时默认生成UTF-8无BOM格式的纯文本,而Excel对UTF-8编码的CSV文件,必须带有BOM(字节顺序标记)才能正确识别日文等非ASCII字符;Excel格式(xlsx)本身内置编码支持,因此不会出现乱码。
解决方案:给CSV内容添加UTF-8 BOM
通过重写ExtJS导出相关类的方法,在生成的CSV内容开头插入UTF-8 BOM标记(\ufeff),即可让Excel正确解析日文字符。
方法1:重写Grid导出插件的内容生成逻辑
Ext.define('MyApp.override.grid.plugin.Exporter', { override: 'Ext.grid.plugin.Exporter', getDocumentData: function(config) { var data = this.callParent(arguments); // 仅针对CSV类型添加BOM if (config?.type === 'csv') { data = '\ufeff' + data; } return data; } });
方法2:直接重写CSV导出类的生成方法
如果项目中直接使用Ext.exporter.Csv类,可重写其生成逻辑:
Ext.define('MyApp.override.exporter.Csv', { override: 'Ext.exporter.Csv', generate: function() { var content = this.callParent(arguments); // 在CSV内容开头插入BOM return '\ufeff' + content; } });
验证方式
导出CSV后,用文本编辑器(如Notepad++)打开,确认编码为「UTF-8带BOM」,再用Excel打开即可正常显示日文字符。
内容的提问来源于stack exchange,提问作者Ganesh R
相关产品推荐
相关产品推荐

