Java爬取网页源码时乱码问题

先上代码

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">

你可能感兴趣的:(java)