黑马程序员技术交流社区

标题: 为什么字节流不能获取搜狐网页面 [打印本页]

作者: 孙胜    时间: 2013-4-27 21:21
标题: 为什么字节流不能获取搜狐网页面
本帖最后由 孙胜 于 2013-5-7 22:41 编辑

以下代码,获取UTF-8网站,如:baidu, hao120
GBK网站,如sina, qq, tudou, youku.等都没有任何问题
为什么单单sohu网站就是乱码。
  1. import java.io.*;
  2. import java.net.*;
  3. public class MyIE {
  4.         private URL url;
  5.         private File file;
  6.         
  7.                
  8.         private BufferedOutputStream out;
  9.         private BufferedInputStream in;


  10.        public static void main(String[] args) throws Exception {
  11.                 new MyIE("http://www.sohu.com", "sohu.html");
  12.         }
  13.         
  14.         
  15.         public MyIE(String url, String file) {
  16.                 // TODO Auto-generated constructor stub
  17.                 try {
  18.                         this.url = new URL(url);
  19.                 } catch (MalformedURLException e) {
  20.                         // TODO Auto-generated catch block
  21.                         e.printStackTrace();
  22.                 }
  23.                 this.file = new File(file);
  24.                
  25.                 downByByte();
  26.         }
  27.         
  28.         
  29.         private void downByByte() {
  30.                
  31.                 URLConnection conn = null;
  32.                 try {
  33.                         conn = url.openConnection();
  34.                 } catch (IOException e) {
  35.                         // TODO Auto-generated catch block
  36.                         e.printStackTrace();
  37.                 }
  38.                
  39.                 try {
  40.                         in = new BufferedInputStream(conn.getInputStream());
  41.                 } catch (IOException e) {
  42.                         // TODO Auto-generated catch block
  43.                         e.printStackTrace();
  44.                 }
  45.                 try {
  46.                         out = new BufferedOutputStream(new FileOutputStream(file));
  47.                 } catch (FileNotFoundException e) {
  48.                         // TODO Auto-generated catch block
  49.                         e.printStackTrace();
  50.                 }
  51.                
  52.                 int len;
  53.                 byte[] buf = new byte[1024];
  54.                 try {
  55.                         while((len = in.read(buf)) != -1) {
  56.                                 
  57.                                 out.write(buf, 0, len);
  58.                         }
  59.                 } catch (IOException e) {
  60.                         // TODO Auto-generated catch block
  61.                         e.printStackTrace();
  62.                 }
  63.                 finally {
  64.                         if(out != null)
  65.                                 try {
  66.                                         out.close();
  67.                                 } catch (IOException e) {
  68.                                         // TODO Auto-generated catch block
  69.                                         e.printStackTrace();
  70.                                 }
  71.                         if(out != null)
  72.                                 try {
  73.                                         out.close();
  74.                                 } catch (IOException e) {
  75.                                         // TODO Auto-generated catch block
  76.                                         e.printStackTrace();
  77.                                 }
  78.                 }
  79.         }

  80. }
复制代码

作者: 袁梦希    时间: 2013-4-27 23:23
一会给你解答
作者: 孙胜    时间: 2013-4-28 15:44
怎么没有人解答?
作者: 孙金鑫    时间: 2013-5-6 00:33
哥们,我试了一下,没问题啊,没有所谓的乱码
作者: 柳汉杰    时间: 2013-5-6 18:53
http流用了gzip压缩。在解析之前先gzip解压缩,就好了。
http://www.iteye.com/problems/54506
作者: 孙胜    时间: 2013-5-7 22:40
不知道什么原因,已经没有问题了,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2