关于.net core 中的GB2312和GBK 等 除UTF类型编码 的使用

08-12  今天在调试.net core 项目遇到一点小坑app

在.net core 中核心都是模块化的我却是疏忽到这一点了  由于在日常的asp.net 中使用Encoding.GetEncoding("GB2312").GetBytes(name)就能够把字符串转化成gb2321格式的(gbk)一样如此,那么当我在项目中写下这句话的时候代码能编译经过可是并不能起到做用,而且还出现了错误(大体意思就是没有找关于gb2312的方法格式  请参阅编码的文档。RegisterProvider方法。)那么后边这个加粗的提示就是最好的解决办法,asp.net

第一;在项目中引用   System.Text.Encoding.CodePages 包ide

第二;在项目启动的地方加上以下代码 模块化

 

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

 

而后项目运行 测试

 

固然你还能够经过官网上例子来测试现项目中所支持的代码页的格式ui

  Console.Write( "CodePage identifier and name     " );
      Console.Write( "BrDisp   BrSave   " );
      Console.Write( "MNDisp   MNSave   " );
      Console.WriteLine( "1-Byte   ReadOnly " );this

      // For every encoding, get the property values.
      foreach( EncodingInfo ei in Encoding.GetEncodings() )  {
         Encoding e = ei.GetEncoding();编码

         Console.Write( "{0,-6} {1,-25} ", ei.CodePage, ei.Name );
         Console.Write( "{0,-8} {1,-8} ", e.IsBrowserDisplay, e.IsBrowserSave );
         Console.Write( "{0,-8} {1,-8} ", e.IsMailNewsDisplay, e.IsMailNewsSave );
         Console.WriteLine( "{0,-8} {1,-8} ", e.IsSingleByte, e.IsReadOnly );
      }spa

但这些都是徒劳的 由于我发现加上了nuget 包以后 他的结果也没有增长任何编码列表.net

这是由于  经过调用Encoding.GetEncodings方法  仅支持   上边代码所展示出来的编码

 

在.NET Framework 4.6,EncodingProvider是使不然不可用的基类可用的.NET framework 的编码方式

  1. 定义的一个子类EncodingProvider可重写两个抽象GetEncoding重载,GetEncoding(Int32)GetEncoding(String) 这些重载返回不然不受支持的编码按代码页标识符和名称。

  2. (可选) 你能够重写虚拟GetEncoding(Int32, EncoderFallback, DecoderFallback)GetEncoding(String, EncoderFallback, DecoderFallback)方法。 在大多数状况下,这不是有必要,由于基类提供了默认实现。

  3. 传递EncodingProvider到实例Encoding.RegisterProvider方法来执行由提供的编码EncodingProvider公共语言运行时可用的对象。

  4. 调用Encoding.GetEncoding重载来检索的编码。 Encoding.GetEncoding方法将调用对应EncodingProvider.GetEncoding以肯定是否能够提供所请求编码。

.NET Framework 类库提供了一个静态属性, CodePagesEncodingProvider.Instance,返回EncodingProvider可使编码的整套可用在桌面.NET Framework 类库可用的对象.NET 核心应用程序。 此外,你能够从派生EncodingProvider类以提供您本身的编码。

最后这句加粗的才是解决本次问题的重点

微软文章地址:https://msdn.microsoft.com/zh-cn/library/system.text.encodingprovider(v=vs.110).aspx

相关文章
相关标签/搜索