先上代码
String strurl="http://search.dangdang.com/?key=%BB%FA%D0%B5%B1%ED&act=input";
try {
URL url=new URL(strurl);
//通过url建立与网页的连接
URLConnection conn=url.openConnection();
//通过链接取得网页返回的数据
InputStream is=conn.getInputStream();
//一般按行读取网页数据,并进行内容分析
//因此用BufferedReader和InputStreamReader把字节流转化为字符流的缓冲流
//进行转换时,需要处理编码格式问题
BufferedReader br=new BufferedReader(new InputStreamReader(is));
//按行读取并打印
String line=null;
while((line=br.readLine())!=null){
System.out.println(line);
}
br.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
结果
解决方法
在创建BufferedReader对象时,设置InputStreamReader对象的编码格式,如下:
BufferedReader br=new BufferedReader(new InputStreamReader(is,"GB2312"));
这里的编码格式要与爬取网页的charset一致,否则依旧会乱码
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">