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

C#中CP1255编码转UTF-8及CSV文件读取问题

解决C#中读取CP1255编码CSV并转UTF-8的问题

当然有现成的办法!C#的System.Text.Encoding类已经内置了对CP1255(希伯来语字符编码)的原生支持,完全不需要你自己编写编码器。

直接用CP1255编码读取CSV

你只需要把代码里的Encoding.UTF8替换成Encoding.GetEncoding(1255)即可,GetEncoding方法会直接返回对应编码的实例,让StreamReader正确解析文件内容:

// 替换原UTF8编码为CP1255
private static Encoding encoding = Encoding.GetEncoding(1255);

// 后续读取逻辑保持不变
var textReader = new StreamReader(reportCsv, encoding);
var csv = new CsvReader(textReader, new Configuration { 
    BadDataFound = null, 
    Delimiter = delim 
});

额外需求:将文件转换为UTF-8格式

如果需要把这份CP1255编码的CSV永久转成UTF-8保存,也可以一次性读取内容后转码写入新文件:

// 读取CP1255编码的文件内容
string csvContent;
using (var cp1255Reader = new StreamReader(reportCsv, Encoding.GetEncoding(1255)))
{
    csvContent = cp1255Reader.ReadToEnd();
}

// 以UTF-8编码写入新文件
using (var utf8Writer = new StreamWriter("converted_utf8.csv", false, Encoding.UTF8))
{
    utf8Writer.Write(csvContent);
}

小提示

  • 如果你使用的是.NET Framework,确保系统中已注册CP1255编码(Windows系统默认自带,无需额外操作);
  • 如果你用的是.NET Core/.NET 5+,编码支持是内置的,直接用就行;
  • 若遇到编码解析异常,可以给GetEncoding添加容错配置,比如指定替换字符处理无法解析的字节:
    Encoding.GetEncoding(1255, new EncoderReplacementFallback("?"), new DecoderReplacementFallback("?"))
    

内容的提问来源于stack exchange,提问作者Doctor Strange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:23:15