为什么在C#中用GetEncoding无法获取gb2312等中文编码?

在C# Core中,如果我们要获取某个编码,比如用下面这个代码:

 

Encoding e1 = Encoding.GetEncoding(“gb2312”);

 

会弹出找不到该编码的异常报错。

 

这时候可以按照下面的步骤解决:

 

1.在【项目】中找到【管理Nuget程序包】中找到【System.Text.Encoding.CodePages】这个包,然后安装。

 

2.在对应的C#方法中添加下面的语句,注册刚刚安装的包里面的编码提供者,然后就可以运行了。

 

  Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

 

完整代码如下:

 

using System;
using System.Text;

namespace ConsoleApp1
{
class Program
{

static void Main(string[] args)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

Encoding e1 = Encoding.GetEncoding(“gb2312”);

//将字符串用默认的编码格式编码成字节数组

byte[] arr = e1.GetBytes(“Abs”);

//将字节数组解码按照指定的编码格式解码成字符串

string r1 = e1.GetString(arr);

Console.Write(r1);

}

}
}

PS:这一现象只存在于.NET Core中,.NET 中不需要这样。

       

发表评论