A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

先上代码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();        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
结果

解决方法

在创建BufferedReader对象时,设置InputStreamReader对象的编码格式,如下:

BufferedReader br=new BufferedReader(new InputStreamReader(is,"GB2312"));
  • 1

这里的编码格式要与爬取网页的charset一致,否则依旧会乱码

<meta http-equiv="Content-Type" content="text/html; charset=GB2312">

4 个回复

倒序浏览
回复 使用道具 举报
奈斯,很赞
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马