日期:2014-05-20  浏览次数:20688 次

JAVA读取html,乱码问题
我想要读取一个网页,提取其中的某些信息,网页source code上有写
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>

所以它是以utf-8编码的
之后html的source code
<li>
      Sergio Agüero
</li>

比如说我想提取Sergio Agüero这样的一个字符串,
String info = score.select("li").toString()

(这里score是li的上一层)
我只能得到Sergio Ag&uuml;ero,乱码。。就是字符ü读不出来。。
查了下论坛上提到过的一些其他方法,比如
String info = new String(score.select("li").toString().getBytes("UTF-8"), "UTF-8");

但可以得到的还是Sergio Ag&uuml;ero
也看到了

InputStreamReader insReader = new InputStreamReader(new FileInputStream(f), "UTF-8");
BufferedReader bufReader = new BufferedReader(insReader);
String line = new String();
while ((line = bufReader.readLine()) != null){
   System.out.println(line);
}

这种方法,但是由于我要读的html比较大,要提取的东西也比较多,所以我觉得一行行读取不是很现实。。。
初学html,不太会其他方法。。想问问大家utf-8编码的html怎么可以提取出Sergio Agüero这样的字符串?

------解决方案--------------------
这是字符实体引用,自己转换成对应的字符就行了,例如replaceAll("&uuml;", "ü")。
http://zh.wikipedia.org/wiki/XML%E4%B8%8EHTML%E5%AD%97%E7%AC%A6%E5%AE%9E%E4%BD%93%E5%BC%95%E7%94%A8%E5%88%97%E8%A1%A8
这是 XML与HTML字符实体引用列表
------解决方案--------------------
我只知道这个解决方法。
这个不是乱码,只是网站采用的一种特殊字符的表示方式,中文不会用这个东西的。
另外想详细了解的话,可以看一下关于XML的字符引用相关的知识.