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

王朝学院·作者佚名  2016-05-29
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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/

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航