【问题标题】:c# Converting cp1255 encoding to utf8c# 将cp1255编码转换为utf8
【发布时间】:2018-08-28 12:41:43
【问题描述】:

我需要解析一个我得到的 csv 文件,我在解析它时意识到所有字符都已损坏经过一些调查,文件似乎是用 cp1255 编码的,我宁愿避免创建自己的编码器,是否有不同的用 c# 读取文件或将其转换为 utf8 的方法?

编辑:

private static Encoding encoding = Encoding.UTF8;
....

  var textReader = new StreamReader(reportCsv, encoding);
  var csv = new CsvReader(textReader, new Configuration { BadDataFound = null, Delimiter = delimiter, Encoding = encoding });

我已经尝试了所有 c# 的编码,但什么也没找到。在使用工具检测该文件中使用的编码后,我发现它是用 cp1255 编码的。我认为我没有解码器/编码器那个。

我正在使用 CsvHelper lib 读取 CSV 文件但我相信问题始于 StreamReader。

【问题讨论】:

标签: c# encoding character-encoding


【解决方案1】:

由于您没有粘贴任何代码,因此很难提供帮助...

但是 c# 中的每个 File 函数都有一个编码参数,您可以在其中指定正在读取的文件的编码,例如:

File.ReadAllLines(String, Encoding)

可以使用 Encoding 类创建编码,例如。对于 cp850:

Encoding encoding = Encoding.GetEncoding(850);

您可以阅读有关编码的更多信息(好文章)here。

另外想知道为什么要将其转换为 utf-8? c# 是原生 utf-16。

编辑

由于项目是基于.net core的,所以需要额外的codepage根据这个so post注册。

【讨论】:

  • 如果我尝试执行 Encoding.GetEncoding(1255) 我收到 NotSupportedException: No data is available for encoding 1255。有关定义自定义编码的信息,请参阅 Encoding.RegisterProvider 的文档方法。
  • 请看Encoding.GetEncodings()的文档。本文内部是检索您的操作系统当前支持的所有编码的示例代码
  • 我尝试了这种方法,但得到的结果很少不相关,难道是因为我使用的是.Net Core?
  • 确实,请尝试so post中描述的方法
  • 我明白了,谢谢你的回答,如果你不和我一起头脑风暴我不会考虑=),请写下你的答案,我会将其标记为已回答。
猜你喜欢
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-28
  • 2023-03-21
相关资源
最近更新 更多