小弟最近在编写一个爬虫程序。
抓取网页得到数据流流之后,不知道如何对网页流解码得到正确的网页源代码字符串。
我用下面的代码得到的网页源代码字符串,有时正确,有时不正确,得到乱码。
URL url = new URL(baseUrl);
BufferedReader buff = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuilder sb = new StringBuilder();
String s;
while((s = buff.readLine()) != null){
    sb.append(s);
}
return sb.toString();请问如何得到网页的编码方式,以及如何正确解析得到网页源码字符串呢?求大家指点,希望有人提供代码帮助我理解,我将不胜感激。
多谢了

解决方案 »

  1.   

    把你的那个url用URLEncoder.encode(String s) 
    重新编码一下、
    我试过可以的 、
      

  2.   

    BufferedReader buff = new BufferedReader(new InputStreamReader(url.openStream(),"GB2312"));
    可以用这句话试试看.
      

  3.   

    我看不能随便encode处理,又不知道页面的原始编码。
      

  4.   

    首先,如何得到网页流的编码方式呢?有的网站使用utf8编码,不同的网站编码方式不一样。而且我还遇到一个问题,就是sohu网,我在浏览器上查看它的源代码,里面标明sohu网使用gb2312编码,但是,我对搜狐网进行解码却得到乱码。
    URL url = new URL("http://www.sohu.com/");
    BufferedReader buff = new BufferedReader(new InputStreamReader(url.openStream(),"gb2312")); //这里面的编码方式可事先到相关网站查询,然后设置
    PrintWriter out = new PrintWriter(file); 
    String s;
    while((s = buff.readLine()) != null){
    out.println(s);
    }
    大家有兴趣可以调试,最后得到的file文件里面的全部是乱码。我想知道这是为什么。如果要这段代码去抓取google网站,google网页的源代码英文字母正确,但是中文字符却是乱码。我想知道这是为什么
    求大家指点 
      

  5.   

    OutputStreamWriter osw=
        new OutputStreamWriter(new FileOutputStream("***.txt",true),"UTF-8");
      

  6.   

    6楼说的对,如果不知道页面是何编码强转会出现乱码的!你可以参考这个博客!http://blog.csdn.net/make19830723/archive/2011/04/06/6305217.aspx
      

  7.   

    OutputStreamWriter osw=
    new OutputStreamWriter(new FileOutputStream("***.txt",true),"UTF-8");