zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    利用列表的知识写一个购物小程序
    基本数据类型(While循环,For循环,列表以及相关用法)
    爬虫学习--Day3(小猿圈爬虫开发_1)
    爬虫学习--常用的正则表达式 Day3
    win10系统任务栏点击没有反应
    python 内建类型
    MWeb
    jmeter创建测试计划
    jmeter建立FTP测试计划
    jmeter配置元件
  • 原文地址:https://www.cnblogs.com/jackicalSong/p/4057572.html
Copyright © 2011-2022 走看看