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

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

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("http://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", "http://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配置。
最新文章
Macbook teamviewer 突破5分钟,苹果电脑重置 Mac 地址,100%解决限制 220
腾讯云代金券 10000 元/ 30000 代金券领取技巧 324
SEO 换友情链接的主意事项,友情链接断链、友情链接套路说明 229
Springboot + Mybatis,数据库多数据源配置项目Demo【源码下载】 1903
Mac mtr 安装并使用,mrt: command not found 299
Java 集成阿里云消息队列,日志消息存储 497
域名备案注意事项,网站域名ICP备案快速通过攻略【干货分享】 472
Springboot 集成Aliyun MQ消息队列,Aliyun 消息队列配置及代码实现 837
SpringBoot 集成Spring-data-redis,redis对象序列化存储 2029
天气API,全国天气 JSON API接口,可以获取十五天的天气预报 604
最热文章
Elasticsearch教程(四) elasticsearch head 插件安装和使用 126781
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 108004
Elasticsearch教程(六) elasticsearch Client创建 78810
Elasticsearch教程(八) elasticsearch delete 删除数据(Java) 74434
Elasticsearch教程(二),IK分词器安装 73217
Elasticsearch教程(一),全程直播(小白级别) 65782
Elasticsearch教程(五) elasticsearch Mapping的创建 61877
Elasticsearch教程(三),IK分词器安装 (极速版) 56361
Elasticsearch教程(七) elasticsearch Insert 插入数据(Java) 53539
Java 解析JSON,JSON-LIB jar包下载和使用。 48973

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

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

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

支付扫码

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

正在加载... ...