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

从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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:25:06