疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

java使用urlConnection抓取部分数据乱码


 

   

  在内容己有中文、英文己正常显示,仍然会有部分中文或英文出现乱码,这是为什么呢?这个问题一直在心里盘旋...真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中....就不会有截断问题了,也就不会有乱码了,乱码是有数据被截断了,本来好好的两字节被截成只剩一个字节,还要解码,不是乱码会是什么?