爬取页面,NCrawler爬取中文网页时乱码问题的解决方法

 2023-09-19 阅读 17 评论 0

摘要:在使用.NET下的NCrawler爬取网页信息时,如果网页以GBK或GB2312进行编码,则下载的内容会出现乱码。 爬取页面,查找原因,发现在NCrawler.HtmlProcessor项目下HtmlDocumentProcessor.cs中的Process()方法使用htmlDoc.DetectEncoding(reader)进行页面编码

   

在使用.NET下的NCrawler爬取网页信息时,如果网页以GBK或GB2312进行编码,则下载的内容会出现乱码。

爬取页面,查找原因,发现在NCrawler.HtmlProcessor项目下HtmlDocumentProcessor.cs中的Process()方法使用htmlDoc.DetectEncoding(reader)进行页面编码检测,出现中文乱码情况。

改用HttpWebResponse中返回的CharacterSet进行编码判断,发现部分网页的Header中未定义CharacterSet,会出现乱码。调试发现这类网页的HttpWebResponse中返回的CharacterSet被统一设置为ISO-8859-1。查阅MSDN发现CharacterSet的缺省设置为ISO-8859-1。

   

抓包显示乱码、

   

   

浏览器乱码怎么解决,修改Process(),使用以下方法可以有效解决乱码问题:

Encoding documentEncoding = Encoding.GetEncoding(propertyBag.CharacterSet);
if (propertyBag.CharacterSet == "ISO-8859-1")
{
  documentEncoding = htmlDoc.DetectEncoding(reader);
}

   

网站乱码怎么解决、转载于:https://www.cnblogs.com/leoyoungblog/p/5075847.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/79940.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息