java读取网页保存之后都是乱码
我用java读取一个网站的源码,但是获取到的源码都是乱码,由于事先不清楚网站的URL也就是说不清楚网站的编码,所以下面的建议不要和我说。
- Java code
URL url = new URL(baseUrl);BufferedReader buff = new BufferedReader(new InputStreamReader(url.openStream()), charSet);StringBuilder sb = new StringBuilder();String s;while((s = buff.readLine()) != null){ sb.append(s);}return sb.toString();上面的代码我相信大家都知道,但是正如我上面所说,我不知道人家要访问什么网站,所以固定的字符集是不可能的!有些网站是utf-8编码、有的是GB2312/GBK编码、有些还是BIG5编码。我该怎么处理?
[解决办法]
- Java code
URL url = new URL("http://www.baidu.com"); BufferedReader buff = new BufferedReader(new InputStreamReader(url.openStream())); StringBuilder sb = new StringBuilder(); String s = null; while((s = buff.readLine()) != null){ sb.append(s+"\n"); } System.out.println(sb);
[解决办法]
应该用:
URLConnection cn = url.openConnection();
然后在从头信息中获取其字符集设置:
cn.getContentEncoding();
[解决办法]
[解决办法]
[解决办法]
哦,很多网站不直接写这个 HTTP-HEAD 信息,看来你只能用另一个函数了,然后再自己解析:
System.out.println(conn.getContentType());
输出:
text/html;charset=gbk
你要自己拆解下。。。