Java - 处理外来字符

时间:2013-11-22 11:31:54

标签: java character-encoding

所以,我有一些Java代码可以获取HTML页面的内容,如下所示:

BufferedReader bf;
String response = "";
HttpURLConnection connection;
try 
{
    connection = (HttpURLConnection) url.openConnection();
    connection.setInstanceFollowRedirects(false);
    connection.setUseCaches(false);
    connection.setRequestMethod("GET");
    connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.16 Safari/534.24");
    connection.connect();
    bf = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    String line;
    while ((line = bf.readLine()) != null) {
        response += line;
    }
    connection.disconnect();
}
catch (Throwable ex)
{
    response = "";
}

这完全正常,并会根据需要将内容返回给我。然后我深入到我要拉的代码区域,如下所示:

10€ de réduction chez Asos be!

Java似乎正在处理€罚款,因为它是一个HTML实体。但是“réduction”这个词有问题。它似乎呈现为:

10€der ductionchez Asos be!

正如你所看到的,它正在努力处理“é”角色。

我该如何解决这个问题?我一直在网上搜索过去几个小时的代码,但没有任何运气!我是Java的新手,所以我很难理解。

提前致谢。

1 个答案:

答案 0 :(得分:1)

该代码没问题,但您可能需要检测响应的字符编码(请参阅here)并将其传递给包装inputStream以获取Reader的类(请参阅here)。

否则问题不在于读取响应,而在于您使用该响应字符串执行的操作。