博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用juniversalchardet解决爬虫乱码问题
阅读量:6896 次
发布时间:2019-06-27

本文共 938 字,大约阅读时间需要 3 分钟。

原创文章,转载请注明。

        爬虫往往会遇到乱码问题。最简单的方法是依据http的响应信息来获取编码信息。但假设对方站点的响应信息不包括编码信息或编码信息错误,那么爬虫取下来的信息就非常可能是乱码。

       好的解决的方法是直接依据页面内容来自己主动推断页面的编码。

如Mozilla公司的firefox使用的universalchardet编码自己主动检測工具。

       juniversalchardet是universalchardet的java版本号。

源代码开源于

       自己主动编码主要是依据统计学的方法来推断。详细原理。能够看

       如今以Java爬虫经常使用的httpclient来解说怎样使用。看下面关键代码:

UniversalDetector encDetector = new UniversalDetector(null);    while ((l = myStream.read(tmp)) != -1) {        buffer.append(tmp, 0, l);        if (!encDetector.isDone()) {            encDetector.handleData(tmp, 0, l);        }    }encDetector.dataEnd();String encoding = encDetector.getDetectedCharset();if (encoding != null) {    return new String(buffer.toByteArray(), encoding);}encDetector.reset();
myStream.read(tmp)) 读取httpclient得到的流。我们要做的就是在读流的同一时候,运用juniversalchardet来检測编码,假设有符合特征的编码的出现,则最后可通过detector.getDetectedCharset()能够得到编码。否则返回null。至此,检測工作结束。通过String的构造方法来进行按一定编码构建字符串。

       

转载于:https://www.cnblogs.com/yutingliuyl/p/7206548.html

你可能感兴趣的文章
with 语句
查看>>
关于mac ox node安装报 npm ERR! registry error parsing json
查看>>
USB通讯协议之深入理解
查看>>
推荐系统-02-推荐技术
查看>>
js基础知识点总结
查看>>
Android在Adapter里面调用Activity的方法/变量
查看>>
HTML5的新增方法
查看>>
c primer plus(五版)编程练习-第六章编程练习
查看>>
实验十——一维数组的定义及引用
查看>>
VC6 下学习使用Teechart8记录
查看>>
protobuf c++例子
查看>>
《TCP/IP详解1》笔记(第1章 概述)
查看>>
Dubbo项目实战 (二) 注册中心zookeeper-3.4.6集群以及高可用
查看>>
COGS 862. 二进制数01串【dp+经典二分+字符串】
查看>>
eclipse中tomcat端口被占用如何解决
查看>>
s31 zabbix监控企业级监控
查看>>
Web 研发模式演变
查看>>
50个提升PHP性能的方法
查看>>
架构师速成6.6-知识的收集整理学习 分类: 架构师速成 ...
查看>>
海报:Silverlight 1.1
查看>>