问题
C#中使用GB2312编码弹出如下错误:
System.ArgumentException:“'GB2312' is not a supported encoding name.
解决
GB2312并不是VS默认支持的编码,需要安装编码库。
1、首先添加引用System.Text.Encoding.CodePages
VS下,工具—》 NuGet包管理器 ----》程序包管理器控制台,输入如下命令:
Install-Package System.Text.Encoding.CodePages
2.使用前代码中注册编码库
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
3.案例
using System;
using System.Text;
namespace CSharpDemo
{
class Program
{
static void Main(string[] args)
{
//注册编码库
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
byte[] gb2312 = Encoding.GetEncoding("GB2312").GetBytes("你好"); //字符串转换为GB2312编码
Console.WriteLine(gb2312.Length); //转换后的长度,4个字节
Encoding FromEcoding = Encoding.GetEncoding("GB2312");
Encoding ToEcoding = Encoding.GetEncoding("UTF-8");
byte[] ToBytes = Encoding.Convert(FromEcoding, ToEcoding, gb2312); //GB2312转为UTF-8
Console.WriteLine(ToBytes.Length); //转换后的长度,6个字节
string Mystring = ToEcoding.GetString(ToBytes); //UTF-8转换成字符串
Console.WriteLine(Mystring);
}
}
}