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


       

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

       

  • 相关阅读:
    RelativeLayout布局属性
    调整CodeIgniter错误报告级别
    php 报错 Cannot modify header information
    ScrollView中嵌套ListView
    机器学习索引贴(未分类)
    进程与线程
    并行程序
    缓存命中率
    启发式算法(Heuristic Algorithm)
    详解 LSTM
  • 原文地址:https://www.cnblogs.com/leoyoungblog/p/5075847.html
Copyright © 2020-2023  润新知