代码之家  ›  专栏  ›  技术社区  ›  Dalton Cézane

VS代码C#-系统。NotSupportedException:没有可用于编码1252的数据

  •  66
  • Dalton Cézane  · 技术社区  · 8 年前

    我正在尝试使用ExcelDataReader来读取。Ubuntu上的xls文件。我将VS代码与C#一起使用。代码如下:

    var stream = File.Open(filePath, mode: FileMode.Open, access: FileAccess.Read);
    var reader = ExcelReaderFactory.CreateReader(stream);
    

    我也试过:

    var reader = ExcelDataReader.ExcelReaderFactory.CreateBinaryReader(stream);
    

    当我运行时,会出现以下异常:

    未处理的异常:系统。NotSupportedException:没有可用于编码1252的数据。有关定义自定义编码的信息,请参阅编码文档。RegisterProvider方法。 at系统。文本编码。GetEncoding(Int32代码页)

    我已经安装了 libmono-i18n-west4.0-cil (还尝试了 libmono-i18n4.0-all )正如我发现一些人建议这样做,但问题仍然存在。还安装了软件包 System.Text.Encoding.CodePages 没有成功。

    有人能帮忙解决这个问题吗?

    1 回复  |  直到 8 年前
        1
  •  188
  •   Dalton Cézane    8 年前

    我也面临同样的问题。net核心应用程序。我添加了 System.Text.Encoding.CodePages nuget包并在之前注册了编码提供程序 ExcelReaderFactory.CreateReader(stream) 解决了问题。

    System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
    //open file and returns as Stream
    using (var stream = File.Open(fileName, FileMode.Open, FileAccess.Read))
    {
          using (var reader = ExcelReaderFactory.CreateReader(stream))
          {
          }
    }
    
    推荐文章