.Net Core GB2312编码问题
2024-08-26 01:04:49
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);
}
最新文章
- 【USACO 2.3】Money Systems(dp)
- AJAX XML返回类型
- iOS开发-【C语言】三目运算符
- 为什么你还在用嵌入式的方式来使用mod_wsgi?
- VS Extension: Create a txt file and set the content
- sublime text 3 中 SFTP插件 的 配置
- thinkphp 查询
- Intellij IDEA创建Maven Web项目
- python语法_列表生成器_生成器_迭代器_异常捕获
- python语言相关语法基础
- MySQL导入导出实践
- linux存储管理之自动挂在
- bootstrap-select插件 多选框
- android studio设计模式和文本模式切换
- EF6使用Mysql,踏过的那些坑
- 学习ASP.NET之旅
- 20155303 2016-2017-2 《Java程序设计》第六周学习总结
- 玩android 遇到的问题-2014年1月15日
- Python虚拟开发环境pipenv
- TensorFlow从1到2(十)带注意力机制的神经网络机器翻译
热门文章
- 【洛谷九月月赛T1】签到题(bsgs)(快速乘)
- vue和jQuery的区别
- day13学python 协程+事件驱动
- 8、insert、delete、update语句总结
- mysqldump导出数据不带时区信息的问题
- [ActionScript 3.0] 翻牌效果,运用语法rotationY,PerspectiveProjection
- String 源码浅析(一)
- php中的date和strtotime函数妙用
- python学习笔记1.3
- Angular material mat-icon 资源参考_Toggle