1.今天抓取了一个网页的源代码.发现中文是乱码的,马上第一反应是编码问题.....

2.仔细一看基于WebClient写的代码,还真的是没有设置编码...

/// <summary>
/// 简单获取html源代码并且转换为IHtmlDocument
/// </summary>
/// <returns></returns>
public IHtmlDocument GetHtmlString(string address)
{
var str = string.Empty;
using (var wc = new WebClient())
{
wc.Encoding = encoding;
str = wc.DownloadString(address);
}
var parser=new HtmlParser();
return parser.Parse(str);
}

3.用浏览器查看网页的源代码是gb2312,遂直接加上编码

  • 新鲜出炉的代码
/// <summary>
/// 简单获取html源代码并且转换为IHtmlDocument
/// </summary>
/// <returns></returns>
public IHtmlDocument GetHtmlString(string address,Encoding encoding=null)
{
if (encoding == null)
{
encoding=Encoding.GetEncoding("GB2312");
}
var str = string.Empty;
using (var wc = new WebClient())
{
wc.Encoding = encoding;
str = wc.DownloadString(address);
}
var parser=new HtmlParser();
return parser.Parse(str);
}

4.然而残酷的现实告诉我们....事情没有那么简单,此处有蹊跷

'GB2312' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.

  • 这段英文还是勉勉强强看懂了,意思应该是不支持GB2312编码

5.原因是找到了,然而还是难倒了我...遂抛出面向百度大法(Google打不开,no way)

  • 添加一个模块(包):System.Text.Encoding.CodePages
  • 可以在程序包管理台敲命令 install-packget System.Text.Encoding.CodePages 进行安装(或者直接在NuGet上搜索'System.Text.Encoding.CodePages'进行安装)

6.最后注册一下模块(我也不知道是不是应该这样描述)

/// <summary>
/// 简单获取html源代码并且转换为IHtmlDocument
/// </summary>
/// <returns></returns>
public IHtmlDocument GetHtmlString(string address,Encoding encoding=null)
{
// 注册模块
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
if (encoding == null)
{
encoding=Encoding.GetEncoding("GB2312");
}
var str = string.Empty;
using (var wc = new WebClient())
{
wc.Encoding = encoding;
str = wc.DownloadString(address);
}
var parser=new HtmlParser();
return parser.Parse(str);
}

.Net Core GB2312编码问题的更多相关文章

  1. .NET Core中使用GB2312编码

    原文:.NET Core中使用GB2312编码 .NET Core默认不支持GB2312,如果直接使用Encoding.GetEncoding("GB2312")的时候会抛出异常. ...

  2. .NET Core 中使用GB2312编码报错的问题

    错误描述 环境 dotnet 2.1.4 现象 当代码中使用 System.Text.Encoding.GetEncoding("GB2312") //或者 System.Text ...

  3. 做网站用UTF-8编码还是GB2312编码?

    经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312. 经常我们打开外国网站的时 ...

  4. Asp.net把UTF-8编码转换为GB2312编码

    系统采用的UTF-8编码,而一些支持系统使用的是GB2312编码. 不同编码的页面.脚本之间互相引用,就会产生乱码的问题,解决方法就是统一成一种编码.asp.net 中,如果要修改输出页面的编码,可以 ...

  5. JS:中文GB2312编码

    今天开发遇到了个问题,有点纳闷.... 在ajax的时候要传递一个中文值,不管我在js中是否使用了encodeURI.encodeURIComponent编码,但是在后台request获取的值是始终是 ...

  6. gb2312编码提交url乱码解决

    gb2312编码提交url,服务器接收时出现乱码,用System.Web.HttpUtility.UrlDecode();解码 ,还是出现乱码,困老了我好长时间,终于在google上找到了解决办法. ...

  7. ASP中Utf-8与Gb2312编码转换乱码问题的解决方法 页面编码声明

    ASP程序在同一个站点中,如果有UTF-8编码的程序,又有GB2312编码的程序时,在浏览UTF-8编码的页面后,再浏览当前网站GB2312的页面,GB2312编码的页面就会出现乱码 出现这样的问题是 ...

  8. Linux下将UTF8编码批量转换成GB2312编码的方法

    Linux下将UTF8编码批量转换成GB2312编码的方法 在sqlplus中导入UTF8编码的sql脚本就会出现乱码错误,这时就需要将UTF8编码转换成GB2312编码,下面为大家介绍下在Linux ...

  9. windows phone 7,sliverlight 下载网页的解析,关于wp7 gb2312编码

    原文:windows phone 7,sliverlight 下载网页的解析,关于wp7 gb2312编码 关于silverlight和wp7(windows phone 7)是默认不支持gb2312 ...

随机推荐

  1. linux 磁盘保留空间设置

    1.查看保留空间大小 tune2fs -l /dev/sda8  reserved blocks 2.调整保留空间大小(系统默认5%) tune2fs -m 0.5 /dev/sda8 参考链接:ht ...

  2. binlog2sql

    从MySQL binlog解析出你要的SQL.根据不同选项,你可以得到原始SQL.回滚SQL.去除主键的INSERT SQL等. 安装 shell> git clone https://gith ...

  3. Spring Boot 多数据源自动切换

    在Spring Boot中使用单数据源的配置很简单,我们简单回忆下:只需要在application.properties进行基本的连接配置,在pom.xml引入基本的依赖即可. 那么多数据源的原理呢? ...

  4. ubuntu15.04下安装jdk8

    前几天手贱,删掉了ubuntu自带的java,最后安装时遇到了Picked up JAVA_TOOL_OPTIONS的问题,经过网上各种找,终于被我弄成功了.下面将经验下载下面供大家方便: jdk8的 ...

  5. npm淘宝镜像和默认镜像切换

    1.得到原本的镜像地址 npm get registry > https://registry.npmjs.org/ 设成淘宝的 npm config set registry http://r ...

  6. 使用bootstrap-table插件

    1.用户提交信息过滤表格内容: a.设置表格查询参数,并在用户提交按钮时候更新表格 <form id="current_table" class="form-inl ...

  7. 调试K3网页版需要注意的问题

    1.BIN目录下不能存放类名相同的多个文件,即使修改了dll名称也不可以,必须保持唯一性,多余的备份到其他目录 2.引用的标准dll集合需要与当前运行程序的标准dll集合保持一致,可以通过修改引用路径 ...

  8. pydicom读取dicom文件报错

    之前采用pydicom读取dicom文件一切都很正常,不过最近读取一批数据的时候,会报错 读取代码 file = pydicom.read_file(filepath) data = file.pix ...

  9. 前端获取指定cookie

    前端获取指定cookie的值 function getCookie(cookiename){ var name = cookiename + "="; var cs = docum ...

  10. git常用安装包,指令

    babel-polufill  -es6  API转义 npm install --save @babel/polyfill babel-runtime -es语法转义 npm install --s ...