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

soゝso 2017-05-13 21:28:49 6267

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超时分析与处理
JSOUP 教程JSOUP请求JSON ,JSOUP返回JSON 数据
JSOUP教程JSOUP的正确打开姿势。
JSOUP 教程—— Java爬虫,简易入门,秒杀htmlparser
N多系统单点登录,实现、解决方案。四种解决方案
Java 之 HTTP请求乱码解决,GZIP 返回值乱码解决
火狐(Firefox )浏览器提示。此链接是不受信任的,站长和用户的解决方案。SSL申请
MySQL数据库存储过程字符集问题,乱码解决办法
Java API接口返回不是JSON的解决方案,SpringMVC返回JSON配置。
最新文章
关于本站所有JavaScript 加密、混淆、解密、美化等安全说明 78
Jsoup 提交参数乱码,解决思路,解决过程及解决方案 29
生成新浪短网址、百度短网址,t.cn / dwz.cn 的生成方式,短链还原 124
ICP怎么操作取消备案,企业、个人怎么自己申请取消备案? 74
Javascript 加密/压缩后运行不了,JavaScript报错排查讲解 87
JavaScript 不可逆加密问题排查之方案一(闭包优化) 132
Java爬虫,Jsoup 爬取大众点评、美团商家信息电话号码解决方案 453
分解质因数 JavaScript 计算方式,及分解质因数讲解 20
湖南腾众4s店服务怎么样?进来看看你就知道了 43
SEO 之 SpringMVC redirect 301,301和302区别详细讲解 103
最热文章
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 177358
Elasticsearch教程(四) elasticsearch head 插件安装和使用 139109
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 124723
Elasticsearch教程(六) elasticsearch Client创建 82187
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 80518
Elasticsearch教程(一),全程直播(小白级别) 77691
Elasticsearch教程(二),IK分词器安装 77279
Elasticsearch教程(八) elasticsearch delete 删除数据(Java) 76897
Elasticsearch教程(五) elasticsearch Mapping的创建 69872
Elasticsearch教程(三),IK分词器安装 (极速版) 58271

骚码加入我们 / 千人QQ群:259217951

入群需要5元,如果没有QQ钱包,可以先Alipay、微信,赞助然后加群主拉进。

二维码生成 来自 >> 二维码生成器

支付扫码

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

正在加载... ...