首页 > Web开发 > 详细

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

时间:2015-12-25 15:10:24      阅读:430      评论:0      收藏:0      [点我收藏+]

   

在使用.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);
}

   

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

原文:http://www.cnblogs.com/leoyoungblog/p/5075847.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!