1.我在读取网页UTF的编码时会遇到乱码,GBK时不会?(InstreamReader读取的)
有什么方法可以在读取的时候可以把UTF8转到GBK或GB2312,这样就不会出现乱码,而且在保存文件的时候也可以同时再转为UTF,
如果直接加上在提取的字符串后面,如果读取GB2312时,好象会保存为UTF,我想有没有什么方法可以判别???2.提取网页某个元素时,如果遇到网页字符较长的字符串会因为SubString()截取问题为Long出错,想问一下大家有什么解决的好方法呀???
有什么方法可以在读取的时候可以把UTF8转到GBK或GB2312,这样就不会出现乱码,而且在保存文件的时候也可以同时再转为UTF,
如果直接加上在提取的字符串后面,如果读取GB2312时,好象会保存为UTF,我想有没有什么方法可以判别???2.提取网页某个元素时,如果遇到网页字符较长的字符串会因为SubString()截取问题为Long出错,想问一下大家有什么解决的好方法呀???
解决方法:InputStreamReader读取时,指定编码. InputStreamReader(InputStream in, String charsetName) 这个构造函数可以指定用什么编码来读取,你必须指定编码,否则会以系统默认编码来读取stream
解决你这个问题,还有一个关系点:你必须事先知道网页是什么编码. 然后把编码信息传递给InputStreamReader. 至于如何知道html编码,一般可以通过html头信息获取. 2. 你用int已经足够大了,没必要用long作为参数, 你知道int有多大吗? 有2^31 这么大,肯定超过 G 级别的字节数,你的网页不可能有这么大!
<filter>
<filter-name>Spring character encoding filter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
这个是控制自己网站的编码吧,读取别人网站的话,应该是不会经过filter的.
String str = "";
try{
java.net.URL url = new URL("http://www.google.com" +
"/");
java.net.HttpURLConnection url_conn = (java.net.HttpURLConnection)url.openConnection();
if (url_conn == null)
return;
url_conn.setConnectTimeout(3000);
InputStream in= url_conn.getInputStream();
BufferedReader br = new BufferedReader(new java.io.InputStreamReader(in));
while((str=br.readLine())!=null){
sb.append(str);
}
System.out.println(sb.toString());
}catch (Exception e) {
// TODO: handle exception
}
这样读取不知道是不是楼主需要的