使用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抓取部分数据乱码的更多相关文章

  1. java通过url抓取网页数据-----正则表达式

    原文地址https://www.cnblogs.com/xiaoMzjm/p/3894805.html [本文介绍] 爬取别人网页上的内容,听上似乎很有趣的样子,只要几步,就可以获取到力所不能及的东西 ...

  2. java通过url抓取网页数据

    在很多行业中,要对行业数据进行分类汇总,及时分析行业数据,对于公司未来的发展,有很好的参照和横向对比.所以,在实际工作,我们可能要遇到数据采集这个概念,数据采集的最终目的就是要获得数据,提取有用的数据 ...

  3. java抓取网页数据,登录之后抓取数据。

    最近做了一个从网络上抓取数据的一个小程序.主要关于信贷方面,收集的一些黑名单网站,从该网站上抓取到自己系统中. 也找了一些资料,觉得没有一个很好的,全面的例子.因此在这里做个笔记提醒自己. 首先需要一 ...

  4. iOS—网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据

    网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...

  5. iOS开发——网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据

    网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...

  6. Java语言实现通过Ajax抓取后台数据及图片

    1.Java语言实现通过Ajax抓取后台数据及图片信息 1.1数据库设计: create table picture( pic_id number not null, pic_name )not nu ...

  7. 使用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 ...

  8. iOS开发——网络使用技术OC篇&网络爬虫-使用正则表达式抓取网络数据

    网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看 ...

  9. Charles 如何抓取https数据包

    Charles可以正常抓取http数据包,但是如果没有经过进一步设置的话,无法正常抓取https的数据包,通常会出现乱码.举个例子,如果没有做更多设置,Charles抓取https://www.bai ...

随机推荐

  1. oozie调用java实例------shell action

    Oozie提供了一个方便的方式来运行任何命令.这可能是Unix命令,Perl或Python脚本,甚至java程序都可以通过Unix shell调用.shell命令运行在任意的Hadoop集群节点上,并 ...

  2. 【转载】#458 Errors While Converting Between enum and Underlying Type

    You can convert to an enum value from its underlying type by casting the underlying type (e.g. int) ...

  3. Bootstrap Table的使用小结

    1.Jquery中的一些东西学习一下子,补充完善一下,毕竟有些时候没有使用到 这个方式很有用,在使用bootstrap table的时候,选择当前已经选择的节点的事件中的ID的值 当前rows中有很多 ...

  4. Android(java)学习笔记58:Android 英文朗诵

    1. 首先,我先把代码放到下面: package com.himi.speaker; import java.util.Locale; import android.app.Activity; imp ...

  5. pthread使用

    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/CreatingTh ...

  6. WebStorm11 注册码及激活

    网址:http://www.jianshu.com/p/5ce394a28ce5 1.获取注册码 打开第一个网址(IntelliJ IDEA 注册码),我们能看到下面的界面,直接点击获取激活码,将生成 ...

  7. 【luogu P1494 [国家集训队]小Z的袜子】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1494 #include <cstdio> #include <algorithm> ...

  8. Android学习笔记_67_Android MyCrashHandler 中异常处理 UncaughtExceptionHandler

    1.程序中故意抛出异常: public class ExceptionActivity extends Activity { String str; @Override public void onC ...

  9. android中cursor对象的使用

    cursor对象是使用行来存储数据的,你要使用它获得数据,就必须知道每一列的数据名称以及他的数据类型才能获得对象数据 常见的方法: .close()关闭资源:记住,所有的资源对象使用完成后都要主动关闭 ...

  10. LeetCode1.两数之和 JavaScript

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 实例: 给定 nums = [2, 7, 11, 15], target ...