java保存繁体网页打开后出现乱码

想实现下保存网页,试了下百度可以,打开来没有问题,但试了试url如果是www.google.com.hk,打开来就是乱码。。。不知道怎么解决
学java没多久。。新手求教。。
以下是java代码

	public static void savePage(URL url) throws IOException, ParserException, IllegalArgumentException{
		InputStream is = url.openStream();
		int i;
		String title = HTMLHelper.getTitle(url);
		String file = url.getFile().trim();
		String host = url.getHost().trim();
		String filename = title+"("+url.getHost()+file+")";
		FileOutputStream fos = new FileOutputStream("Pages\\"+filename+".html");
		do{
			i = is.read();
			fos.write(i);
		}
		while(i!=-1);
		is.close();
		fos.close();
		System.out.println("Success!The filename is:"+filename+".html");
		
	}
阅读 5.9k
3 个回答

应该是文件编码的问题,百度首页编码是GBK,而Google则是UTF-8。

选择合适的编辑器打开,应当能够正确识别。

我觉得有两种可能:
1、google禁止了爬虫,需要模拟浏览器,在请求头添加浏览器信息才可以
2、google使用了gzip压缩,需要对下载过来的数据进行gzip解压才能查看

试了一下, 百度网页为utf8; 直接java访问www.google.com.hk拿到的网页为big5.

直接浏览器看www.google.com.hk, 则得到简体中文 网页. 但是也可以选择繁体中文.

应该不是用Accept Language报头控制的. Firebug看了下, 用的是cookie: PREF=ID=dc26c65e5190d12e:U=4487c9dd846518f1:FF=2:LD=zh-CN:NW=1:TM=1368715005:LM=1375804660:GM=1:S=ipFDUy0r8i8WGrOP; 如果发繁体中文请求, 则为: PREF= (...省略)LD=zh-TW...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
101 新手上路
子站问答
访问
宣传栏