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

使用FileHelper.dll导出CSV时Excel显示乱码的问题求助

解决Excel打开UTF-8 CSV时特殊字符乱码的问题

这个问题我碰到过好多次,根源其实很简单:Excel 2016对UTF-8编码的CSV文件有个“小脾气”——如果文件开头没有UTF-8 BOM(字节顺序标记),它就会默认用系统的ANSI编码去解析,导致像弯引号这类特殊字符显示成乱码,而记事本/Notepad++会自动检测UTF-8编码,所以能正常显示。

针对你的代码,只需要在输出CSV内容之前,往Response里写入UTF-8的BOM即可修复,具体修改如下:

this.Response.Clear();
this.Response.ClearContent();
this.Response.ClearHeaders();
Response.ContentType = "text/csv";
Response.AddHeader("content-disposition", "attachment; filename=" + "Unicode_CSV_Demo.csv");

DemoCSVcls DemoCSVcls = new DemoCSVcls();
List<DemoCSVcls> CSVTextList = new List<DemoCSVcls>();
DemoCSVcls.Text1 = "‘tipping off’";
DemoCSVcls.Text2 = "ʼ";
CSVTextList.Add(DemoCSVcls);

var engine = new FileHelperEngine<DemoCSVcls>(Encoding.UTF8);
string finalString = engine.WriteString(CSVTextList);

// 关键步骤:写入UTF-8 BOM,让Excel正确识别编码
Response.BinaryWrite(Encoding.UTF8.GetPreamble());

Response.BufferOutput = true;
Response.Write(finalString);
Response.Flush();
Response.End();

补充说明:

  • Encoding.UTF8.GetPreamble()会返回UTF-8的BOM字节数组(0xEF, 0xBB, 0xBF),把它写入Response开头,Excel就能准确识别文件是UTF-8编码了。
  • 你已经正确设置了FileHelperEngine的编码为UTF-8,也指定了ContentType为text/csv,这部分不需要改动。
  • 测试的时候重新导出文件用Excel打开,特殊字符应该就能正常显示了。

内容的提问来源于stack exchange,提问作者Muktabai Chavan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:02:45