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

2017-06-28 15:51:25:  

使用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中。这种必然会导致内容出现乱码。

那我们怎么解决这个问题呢?

String strURL = "http://www.jn.fang.com";
URL url = new URL(strURL);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
InputStreamReader input = new InputStreamReader(httpConn.getInputStream(), "utf-8");
BufferedReader bufReader = new BufferedReader(input);
String line = "";
StringBuilder contentBuf = new StringBuilder();
while ((line = bufReader.readLine()) != null) {
    contentBuf.append(line);
}

如果还是乱码,可把utf-8改为gbk,这个搜房网就需要改为gbk


Tags :

精品书籍

更多

HTML5与CSS3权威指南代码清单
Sass和Compass设计师指南
JavaScript框架高级编程

最新评论

爱仕达
对 : 关于我
评论 : 爱仕达

7890
对 : 关于我
评论 : 7890

6789
对 : 关于我
评论 : 6789

56785678
对 : 关于我
评论 : 5678

4567
对 : 关于我
评论 : 4567