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

读取含短破折号、左右引号等特殊字符CSV文件的编码问题

解决ANSI编码CSV文件读取时特殊字符显示异常的问题

这问题根源很清晰——你用UTF-8编码去读取实际为ANSI编码的CSV文件,编码不匹配直接导致短破折号(–)、左右双引号(“”)这类特殊字符无法被正确解析,出现方框或菱形问号的乱码。

为什么会这样?

Windows里的「ANSI编码」其实对应系统默认的代码页:比如中文系统通常是GBK(代码页936),英文系统多为Windows-1252。当你用UTF-8读取非UTF-8编码的文件时,字节序列被错误解码,自然就出现乱码。而你手动写入特殊字符能正常显示,是因为写入时直接用UTF-8编码保存,读取环境能正确识别这部分内容。

修正方案

读取文件时,改用与源文件匹配的ANSI编码即可:

方案1:使用系统默认ANSI编码(简单直接)

// 替换原读取代码,用系统默认ANSI编码读取
string[] lines = File.ReadAllLines(filePathTxt.Text, Encoding.Default);

方案2:指定具体代码页(更精准)

如果用Notepad++看到源文件的ANSI对应具体代码页(比如英文系统的Windows-1252,中文系统的GBK),可以直接指定:

// 英文系统示例:Windows-1252编码
string[] lines = File.ReadAllLines(filePathTxt.Text, Encoding.GetEncoding(1252));

// 中文系统示例:GBK编码
// string[] lines = File.ReadAllLines(filePathTxt.Text, Encoding.GetEncoding(936));

额外说明

如果后续希望把文件统一转成UTF-8编码保存,读取时用正确的ANSI编码解析后,再用你现有的UTF-8写入代码保存即可,这样后续读写就不会再出现编码问题。

内容的提问来源于stack exchange,提问作者Brent Kilboy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:52:51