java使用urlConnection抓取部分数据乱码
使用urlconnection做抓取的同学应该一开始都是使用这个吧。OK回到正题来.....
在内容己有中文、英文己正常显示,仍然会有部分中文或英文出现乱码,这是为什么呢?这个问题一直在心里盘旋...真TM的蛋疼....
网上己有解决方案了,,其实这个跟各位开始学习与使用java的资料有关。
网上大部分代码都是如下:
byte[] by = new byte[20000];
StringBuffer strBuffer = new StringBuffer();
int len = 0;
while ((len = urlStream.read(by, 0, by.length)) != -1) {
strBuffer.append(new String(by, 0, len, "utf-8"));
}
这种写法就会导致抓回的代码中有字符出现乱码。
来分析下原因:将数据流截断(by数组最大长度为20000),再转码扔进StringBuffer中。这种必然会导致内容出现乱码。
那我们怎么解决这个问题呢?
BufferedReader reader=new BufferedReader(new InputStreamReader(urlStream,"utf-8"));
StringBuffer strBuffer = new StringBuffer();
String line=null;
while((line=reader.readLine())!=null){
strBuffer.append(line);
}
将数据流先转码,再加入到StringBuffer中....就不会有截断问题了,也就不会有乱码了,乱码是有数据被截断了,本来好好的两字节被截成只剩一个字节,还要解码,不是乱码会是什么?
小伙伴们你们现在明白了吗?
更多博客请看这里:http://www.cnblogs.com/jackicalSong/
java使用urlConnection抓取部分数据乱码的更多相关文章
- java通过url抓取网页数据-----正则表达式
原文地址https://www.cnblogs.com/xiaoMzjm/p/3894805.html [本文介绍] 爬取别人网页上的内容,听上似乎很有趣的样子,只要几步,就可以获取到力所不能及的东西 ...
- java通过url抓取网页数据
在很多行业中,要对行业数据进行分类汇总,及时分析行业数据,对于公司未来的发展,有很好的参照和横向对比.所以,在实际工作,我们可能要遇到数据采集这个概念,数据采集的最终目的就是要获得数据,提取有用的数据 ...
- java抓取网页数据,登录之后抓取数据。
最近做了一个从网络上抓取数据的一个小程序.主要关于信贷方面,收集的一些黑名单网站,从该网站上抓取到自己系统中. 也找了一些资料,觉得没有一个很好的,全面的例子.因此在这里做个笔记提醒自己. 首先需要一 ...
- iOS—网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据
网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...
- iOS开发——网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据
网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...
- Java语言实现通过Ajax抓取后台数据及图片
1.Java语言实现通过Ajax抓取后台数据及图片信息 1.1数据库设计: create table picture( pic_id number not null, pic_name )not nu ...
- 使用JAVA抓取网页数据
一.使用 HttpClient 抓取网页数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...
- iOS开发——网络使用技术OC篇&网络爬虫-使用正则表达式抓取网络数据
网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看 ...
- Charles 如何抓取https数据包
Charles可以正常抓取http数据包,但是如果没有经过进一步设置的话,无法正常抓取https的数据包,通常会出现乱码.举个例子,如果没有做更多设置,Charles抓取https://www.bai ...
随机推荐
- 关于selenium无法定位动态元素的解决方法
今天在写一个关于登录的自动化脚本时,在对元素定位时总会报下面的错:
- oozie coordinator 定时调度
(本段内容摘自http://blog.sina.com.cn/s/blog_e699b42b0102xjqw.html Oozie总结 行成于思的博客) Oozie提出了Coordin ...
- 新手理解HTML、CSS、javascript之间的关系-修订
几年前写过一篇博文 <新手理解HTML.CSS.javascript之间的关系>,没想到网上出现了不少转载,当时没有太用心,里面的很多内容有待商榷,这里发布重新发布一篇. 网页主要有三部分 ...
- 根据GB2312编码表求汉字字节
java中有8种基本数据类型,byte,short,int,long,float,double,boolean byte用1个字节表示,占8比特,取值范围 负2的7次方至正2的7次方减1 二进制000 ...
- 【题解】洛谷P1495 曹冲养猪 (中国剩余定理)
洛谷P1495:https://www.luogu.org/problemnew/show/P1495 思路 建立了a个猪圈 有b头猪没有去处 即x≡b(mod a) x即是ans 把所有的关系全部列 ...
- HDU 1216 Assistance Required(暴力打表)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1216 Assistance Required Time Limit: 2000/1000 MS (Ja ...
- Storm 出现 no jzmq in java.library.path
在真实环境中运行时,在log日志下,查看workpid日志发现出现该错误. 解决办法: 在conf/storm.yaml添加jzmq安装的路径, 我使用的默认安装在/usr/local/lib下 ja ...
- 02_Linux 终端命令格式
01. 终端命令格式 command [-options] [parameter] 说明: command:命令名,相应功能的英文单词或单词的缩写 [-options]:选项,可用来对命令进行控制,也 ...
- <head> 中的 JavaScript 函数
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- Java 基础标识符
标识符: 程序员为自己定义的类,方法或者变量等起的名称. 标识符由大写字母,数字,下划线(_)和美元符号组成,但不能以数字开头.Java 语言中严格区分大小写. 包名: 使用小写字母. 类名和接口名: ...