一个关于java URL这个类的用法的问题,读中文的问题
我的问题是,我用如下的方法读取一个html网页的代码,但是读出中文之后,我去查询是否包含某个特定的字符串的时候,总是提示不存在,英文就没问题
不知道是不是编码的问题啊?
谁能帮我解决一下啊?
URL conn = new URL( "http://news.163.com/world/ ");
InputStream in = conn.openStream();
int n = 0;
InputStreamReader isr = new InputStreamReader(in, "gbk ");
char[] ch = new char[1024];
//StringBuffer sb = new StringBuffer(2000);
String content = " ";
//boolean flag = false;
Pattern p = Pattern.compile( ".* <!--子栏目通栏--> .* ");
Matcher matcher = null;
while ((n = isr.read(ch)) > 0) {
//isr.read(ch);
content = String.valueOf(ch);
matcher = p.matcher(content);
if (matcher.find())
System.out.println( "yes ");
}
isr.close();
in.close();
// Pattern p = Pattern.compile( ".* <!-- 国内头条--> .* ");
// Matcher m = p.matcher( "士大 <!-- 国内头条--> 夫 ");
// if (m.find())
// System.out.println( "yes ");
//System.out.println(content);
} catch (Exception e) {
e.printStackTrace();
}
------解决方案--------------------也许是两点你没有注意到
1、你这个文件本身的编码是什么
2、下载的那个网页编码是什么
3、InputStreamReader isr = new InputStreamReader(in, "gbk ");这一句指定的编码是什么
最重要的是2和3,如果不一致的话,中文是拿不到的
http://news.163.com/world/ 这个网页的编码是GB2312的,你用GBK应该没有问题
问题应该出在你这个类的文件本身的编码上,改成GBK,或者GB2312就可以了