.Net Core GB2312编码问题
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编码问题的更多相关文章
- .NET Core中使用GB2312编码
原文:.NET Core中使用GB2312编码 .NET Core默认不支持GB2312,如果直接使用Encoding.GetEncoding("GB2312")的时候会抛出异常. ...
- .NET Core 中使用GB2312编码报错的问题
错误描述 环境 dotnet 2.1.4 现象 当代码中使用 System.Text.Encoding.GetEncoding("GB2312") //或者 System.Text ...
- 做网站用UTF-8编码还是GB2312编码?
经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312. 经常我们打开外国网站的时 ...
- Asp.net把UTF-8编码转换为GB2312编码
系统采用的UTF-8编码,而一些支持系统使用的是GB2312编码. 不同编码的页面.脚本之间互相引用,就会产生乱码的问题,解决方法就是统一成一种编码.asp.net 中,如果要修改输出页面的编码,可以 ...
- JS:中文GB2312编码
今天开发遇到了个问题,有点纳闷.... 在ajax的时候要传递一个中文值,不管我在js中是否使用了encodeURI.encodeURIComponent编码,但是在后台request获取的值是始终是 ...
- gb2312编码提交url乱码解决
gb2312编码提交url,服务器接收时出现乱码,用System.Web.HttpUtility.UrlDecode();解码 ,还是出现乱码,困老了我好长时间,终于在google上找到了解决办法. ...
- ASP中Utf-8与Gb2312编码转换乱码问题的解决方法 页面编码声明
ASP程序在同一个站点中,如果有UTF-8编码的程序,又有GB2312编码的程序时,在浏览UTF-8编码的页面后,再浏览当前网站GB2312的页面,GB2312编码的页面就会出现乱码 出现这样的问题是 ...
- Linux下将UTF8编码批量转换成GB2312编码的方法
Linux下将UTF8编码批量转换成GB2312编码的方法 在sqlplus中导入UTF8编码的sql脚本就会出现乱码错误,这时就需要将UTF8编码转换成GB2312编码,下面为大家介绍下在Linux ...
- windows phone 7,sliverlight 下载网页的解析,关于wp7 gb2312编码
原文:windows phone 7,sliverlight 下载网页的解析,关于wp7 gb2312编码 关于silverlight和wp7(windows phone 7)是默认不支持gb2312 ...
随机推荐
- Python数据模型建立
基本结构AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 pri ...
- 清北学堂2019NOIP提高储备营DAY3
今天是钟神讲课,讲台上照旧摆满了冰红茶 目录时间到: $1. 动态规划 $2. 数位dp $3. 树形dp $4. 区间dp $5. 状压dp $6. 其它dp $1. 动态规划: ·以斐波那契数列为 ...
- 279. 完全平方数 leetcode JAVA
题目: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示例 1: 输入: n = 12 输出: 3 解释: ...
- IO模型《三》非阻塞IO
非阻塞IO(non-blocking IO) Linux下,可以通过设置socket使其变为non-blocking.当对一个non-blocking socket执行读操作时,流程是这个样子: 从图 ...
- [agc016b]Colorful Hats 分类讨论
Description 有n个人,每个人都戴着一顶帽子.当然,帽子有不同的颜色. 现在,每个人都告诉你,他看到的所有其他人的帽子共有多少种颜色,请问你有没有符合所有人的描述的情况. Input ...
- python 绘制抛物线
%matplotlib inlineimport matplotlib.pyplot as plt import numpy as npx = range(100) y = [val**2 for v ...
- requests库的使用
requests库的使用 pip快速安装 pip install requests 请求方法 每一个请求方法都有一个对应的API,比如GET请求就可以使用get()方法: import reques ...
- 【算法笔记】B1017 A除以B
1017 A除以B (20 分) 本题要求计算 A/B ,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数.你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立. 输入格式: ...
- Timer分析
学而时习之,不亦说乎! --<论语> Java的JDK中自带的任务调度实现.简单易用,源码也很清晰,总共由四个类组成,都在Time ...
- CDH集群安装配置(三)- 集群时间同步(主节点)和 免密码登录
集群时间同步(主节点) 1. 查看是否安装ntp服务,如果没有安装 rpm -qa |grep ntpd查看命令 yum install ntp安装命令 2. 修改配置 vi /etc/ntp.con ...