java读取网页封存之后都是乱码
java读取网页保存之后都是乱码
我用java读取一个网站的源码,但是获取到的源码都是乱码,由于事先不清楚网站的URL也就是说不清楚网站的编码,所以下面的建议不要和我说。
上面的代码我相信大家都知道,但是正如我上面所说,我不知道人家要访问什么网站,所以固定的字符集是不可能的!有些网站是utf-8编码、有的是GB2312/GBK编码、有些还是BIG5编码。我该怎么处理?
------解决方案--------------------
我用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
你要自己拆解下。。。