JSOUP教程,JSOUP 乱码处理,JSOUP生僻字乱码解决方案

JSON 2017-05-13 21:28:49 46654

JSOUP乱码情况产生

这几天我用  JSOUP  多线程的方式,爬取了200 多万数据,数据为各地的地名相关。结果有小部分数据,不到 1  万乱码。我先检查了我的编码为UTF-8 ,觉得应该没有问题。代码基本如下如下:

    try{
    	doc = Jsoup.connect(url)
    		.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0")
    		.header("Connection", "close")//如果是这种方式,这里务必带上
    		.timeout(8000)//超时时间
    		.get();
    } catch (Exception e) {//可以精确处理timeoutException
    	//超时处理
    }

而我后来我查看了对方的页面编码,发现对方的页面编码为 GBK ,而返回数据为GB2312 ,那我们先尝试一下GBK

JSOUP乱码解决

其实在这里如果返回的 Document  乱码,就不用去再做转码了。比如有同学类似这样:

String str = new String(docStr.getBytes("GBK"), "UTF-8");  

其实没有太大作用,  JSOUP  支持在请求的时候,传入URL 对象,然后设置编码。如下方式才是正解,设置编码为GBK

doc = Jsoup.parse(new URL(url).openStream(), "GBK", url);

如果对方是UTF-8 ,那就设置为UTF-8 ,对应页面的编码,怎么看页面的编码?

这里会显示返回的编码类型和返回的类型,如text/html application/json 等等。

还有一种方式查看页面编码。右键页面源码,如下图所示


这里顺便贴一下,编码设置后并且设置请求头信息的模拟。较为详细的  Demo  。

URL url = new URL("https://www.sojson.com");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
//默认就是Get,可以采用post,大小写都行,因为源码里都toUpperCase了。
connection.setRequestMethod("GET");
//是否允许缓存,默认true。
connection.setUseCaches(Boolean.FALSE);
//是否开启输出输入,如果是post使用true。默认是false
//connection.setDoOutput(Boolean.TRUE);
//connection.setDoInput(Boolean.TRUE);
//设置请求头信息
connection.addRequestProperty("Connection", "close");
//设置连接主机超时(单位:毫秒)  
connection.setConnectTimeout(8000);  
 //设置从主机读取数据超时(单位:毫秒)  
connection.setReadTimeout(8000);    
//设置Cookie
connection.addRequestProperty("Cookie","你的Cookies" );
//开始请求
Document doc = Jsoup.parse(connection.getInputStream(), "GBK", "https://www.sojson.com");

//TODO --- 

哦了,还有问题加群交流吧!QQ群:259217951。

版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/225.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
Jsoup 提交参数乱码解决思路,解决过程及解决方案
JSOUP 教程JSOUP爬虫教程JSOUP超时分析与处理
JSOUP 教程JSOUP请求JSON ,JSOUP返回JSON 数据
Java爬虫,Jsoup 爬取大众点评、美团商家信息电话号码解决方案
JSOUP教程JSOUP的正确打开姿势。
JSOUP 教程—— Java爬虫,简易入门,秒杀htmlparser
N多系统单点登录,实现、解决方案。四种解决方案
Java 之 HTTP请求乱码解决,GZIP 返回值乱码解决
iTunes 没有“应用”这个选项解决方案
Springboot 集成Freemarker 自定义标签解决方案
最新文章
PHP变量剖析 11
SQL全外连接剖析 119
SQL自然连接剖析 147
springboot启动原理 245
SQL右连接【RIGHT JOIN】详解及图解 450
SQL左链接【LEFT JOIN】详解及图解 357
SQL非等值连接剖析 262
SQL等链接剖析 291
SQL内连接详解及图解 385
python之numpy常用的100种数值相关方法及代码示例 231
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 679241
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 674561
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 599031
免费天气API,天气JSON API,不限次数获取十五天的天气预报 565278
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 551715
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 509186
Elasticsearch教程(四) elasticsearch head 插件安装和使用 479645
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 262820
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244092
Elasticsearch教程(一),全程直播(小白级别) 225127
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...