原文:.NET Core中使用GB2312编码

.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;
}
}

最新文章

  1. How PhoneGap &amp; Titanium Works
  2. Android 图片添加水印图片或者文字
  3. nginx日常运维
  4. 分享25个新鲜出炉的 Photoshop 高级教程
  5. CSS第二天总结 更多的选择符
  6. 打印出所有的 &quot;水仙花数 &quot;,所谓 &quot;水仙花数 &quot;是指一个三位数 其各位数字立方和等于该数本身。 例如:153是一个 &quot;水仙花数 &quot; 因为153=1*1*1+5*5*5+3*3*3
  7. 使用Memory Analyzer tool(MAT)分析内存泄漏(二)
  8. hdoj 1251 字典树
  9. 推荐一些socket工具,TCP、UDP调试、抓包工具 推荐一些socket工具,TCP、UDP调试、抓包工具
  10. Android 网络交互之MD5为什么要加盐
  11. 基于visual Studio2013解决C语言竞赛题之0520相邻元素
  12. Swift - 经纬度位置坐标与真实地理位置相互转化
  13. 阿凡题UWP的源码公开
  14. 网卡驱动引起openstack的mtu问题
  15. c#调用com组件,程序 发生意外&lt;hr=0x80020009&gt;
  16. IO多路复用三种方式select/poll/epoll
  17. SpringBoot2.0+Shiro+JWT 整合
  18. 使用paramiko远程执行命令、下发文件
  19. C#-MVC开发微信应用(5)--自动应答系统-自动回复机器人
  20. 通过这些示例快速学习Java lambda语法

热门文章

  1. vsftp 匿名访问设置设置
  2. 【POJ1573】Robot Motion
  3. Verticles for Web Application
  4. 【软工实践】Beta冲刺(1/5)
  5. 剑指offer:构建乘积数组
  6. 从零开始搭建实验室Ubuntu服务器 | 深度学习工作站
  7. coredump之栈溢出
  8. JetBrainsIDEA-structure结构继承的图标说明
  9. Win10 LTSC 2019 安装和卸载 linux 子系统
  10. python问题集