从jqGrid表格导出CSV至Excel时出现编码异常问题求助
解决jqGrid导出CSV在Excel中乱码的问题
这个问题我之前也碰到过,其实根源是Excel对UTF-8 CSV文件的识别逻辑和文本编辑器不一样:Notepad++这类工具会自动检测UTF-8编码,但Excel默认打开UTF-8 CSV时,如果文件开头没有UTF-8 BOM(字节顺序标记),就会错误识别编码,导致乱码。
给你两个可行的解决方案:
方案一:手动添加UTF-8 BOM后下载
修改exportToCsv的调用,先获取导出的CSV字符串,在头部添加BOM标记后再触发下载,具体代码如下:
// 先获取CSV格式的字符串内容 const csvContent = $("#table").jqGrid("exportToCsv", { mimetype: "text/csv;charset=utf-8", separator: ";", separatorReplace: "", quote: '"', escquote: '"', newLine: "\r\n", replaceNewLine: " ", includeCaption: true, includeLabels: false, includeGroupHeader: false, includeFooter: true, fileName: "phonebook.csv", returnAsString: true // 将returnAsString设为true,返回字符串而非直接下载 }); // 在CSV内容前添加UTF-8 BOM标记 const bomCsvContent = "\ufeff" + csvContent; // 创建Blob并触发下载 const blob = new Blob([bomCsvContent], { type: "text/csv;charset=utf-8" }); const downloadUrl = URL.createObjectURL(blob); const link = document.createElement("a"); link.href = downloadUrl; link.download = "phonebook.csv"; document.body.appendChild(link); link.click(); document.body.removeChild(link); URL.revokeObjectURL(downloadUrl);
方案二:Excel手动导入(临时应急)
如果不想修改代码,可以用Excel的导入功能来打开文件:
- 打开Excel,点击「数据」选项卡
- 选择「自文本/CSV」,选中你的导出文件
- 在导入向导中,编码选择「UTF-8」,然后完成导入,就能正常显示内容了
第一种方案一劳永逸,导出的文件可以直接双击用Excel打开而不会乱码。
内容的提问来源于stack exchange,提问作者Den B
相关产品推荐
相关产品推荐

