.NET Core中使用编码GB2312报错:‘GB2312‘ is not a supported encoding name 的解决方案
程序员文章站
2024-01-10 18:28:40
...
#事故现场
在.Net Core中使用XElement解析GB2312
编码的xml文件,
代码如下:
string xmlp = "G:\\test\\content.xml";
XElement xe = XElement.Load(xmlp);
var tittle = xe.Element("TITLE").Value.Trim();
var author = xe.Element("AUTHOR").Value.Trim();
报错如下:
‘GB2312’ is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
#分析原因
使用代码检查支持的编码:
var encodeArr= System.Text.Encoding.GetEncodings();
发现获得的编码中没有GB2312
或者GBK
。
#解决方案
1、在NuGet
包中安装包System.Text.Encoding.CodePages
。
2、在使用编码方法之前,对编码进行注册( Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);),代码如下:
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
string xmlp = "G:\\test\\content.xml";
XElement xe = XElement.Load(xmlp);
var tittle = xe.Element("TITLE").Value.Trim();
var author = xe.Element("AUTHOR").Value.Trim();