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

使用StringBuilder写入带重音字符的CSV文件,Excel打开出现乱码问题

问题解析与解决方案

这个问题其实和Excel头信息没关系,核心是**编码与BOM(字节顺序标记)**的问题!

为什么会乱码?

你用File.WriteAllText默认写入的是无BOM的UTF-8编码内容。但Excel默认打开CSV文件时,会把无BOM的UTF-8当成系统默认编码(比如Windows-1252)来解析,导致重音字符被错误解码,出现é这类乱码——虽然文件本身的内容是正确的(用普通文本编辑器打开能看到正常的ù;é;à),但Excel的自动识别逻辑在这里没起作用。

修复方案

最简单的解决方式是写入CSV时,指定带BOM的UTF-8编码。.NET中的Encoding.UTF8默认会添加BOM,只需修改File.WriteAllText的调用,加上编码参数即可:

StringBuilder strbr = new StringBuilder();
strbr.AppendLine("ù;é;à");
// 第三个参数指定Encoding.UTF8,会自动添加UTF-8 BOM
File.WriteAllText(filePath + ".csv", strbr.ToString(), Encoding.UTF8);

这样生成的CSV文件开头会有UTF-8 BOM,Excel打开时就能正确识别编码,重音字符也会正常显示了。

备选方案(手动导入)

如果不想给文件添加BOM,也可以通过Excel手动导入CSV:

  • 打开Excel,点击「数据」选项卡 → 「自文本/CSV」
  • 选择你的CSV文件,在导入向导中选择「UTF-8」编码,完成导入后字符就能正常显示。不过这种方式需要用户手动操作,不如带BOM的方式便捷。

内容的提问来源于stack exchange,提问作者A.Pissicat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:21:45