.NET Core中使用GB2312编码
2024-10-20 08:51:40
.NET Core默认不支持GB2312,如果直接使用Encoding.GetEncoding(“GB2312”)的时候会抛出异常。
记录下解决方案:
1.需要添加这个NuGet包
System.Text.Encoding.CodePages
这个包可以提供Windows-1252, Shift-JIS, and GB2312 三种编码,安装好这个包后边能够使用GB2312编码。
项目重新生成后在.csproj 文件中看看有没有这个包的信息
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.5.1" />
没有的话也可以手动添加:
<ItemGroup>
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.5.1" />
</ItemGroup>
2.在使用GB2312编码前需要先使用Encoding.RegisterProvider方法注册
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
然后就可以正常使用GB2312编码,下面是我用来转码html内容的方法
public static HttpClient Client { get; } = new HttpClient();
public static string GetHtmlByUrl(string url)
{
//先执行这个,不然使用GB2312报错
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
try
{
System.Net.WebRequest wRequest = System.Net.WebRequest.Create(url);
wRequest.ContentType = "text/html; charset=gb2312";
wRequest.Method = "get";
wRequest.UseDefaultCredentials = true;
// 获取Url返回html信息
var task = wRequest.GetResponseAsync();
System.Net.WebResponse wResp = task.Result;
System.IO.Stream respStream = wResp.GetResponseStream();
//使用GB2312编码读取
using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding("GB2312")))
{
return reader.ReadToEnd();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return string.Empty;
}
}
最新文章
- How PhoneGap &; Titanium Works
- Android 图片添加水印图片或者文字
- nginx日常运维
- 分享25个新鲜出炉的 Photoshop 高级教程
- CSS第二天总结 更多的选择符
- 打印出所有的 ";水仙花数 ";,所谓 ";水仙花数 ";是指一个三位数 其各位数字立方和等于该数本身。 例如:153是一个 ";水仙花数 "; 因为153=1*1*1+5*5*5+3*3*3
- 使用Memory Analyzer tool(MAT)分析内存泄漏(二)
- hdoj 1251 字典树
- 推荐一些socket工具,TCP、UDP调试、抓包工具 推荐一些socket工具,TCP、UDP调试、抓包工具
- Android 网络交互之MD5为什么要加盐
- 基于visual Studio2013解决C语言竞赛题之0520相邻元素
- Swift - 经纬度位置坐标与真实地理位置相互转化
- 阿凡题UWP的源码公开
- 网卡驱动引起openstack的mtu问题
- c#调用com组件,程序 发生意外<;hr=0x80020009>;
- IO多路复用三种方式select/poll/epoll
- SpringBoot2.0+Shiro+JWT 整合
- 使用paramiko远程执行命令、下发文件
- C#-MVC开发微信应用(5)--自动应答系统-自动回复机器人
- 通过这些示例快速学习Java lambda语法