Java-处理外来字符

Java-处理外来字符,java,character-encoding,Java,Character Encoding,因此,我有一些Java代码,用于获取HTML页面的内容,如下所示: BufferedReader bf; String response = ""; HttpURLConnection connection; try { connection = (HttpURLConnection) url.openConnection(); connection.setInstanceFollowRedirects(false); connection.setUseCaches(f

因此,我有一些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!
这是完美的作品,并将返回的内容给我的要求。然后我向下钻取到我想要提取的代码区域,如下所示:

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实体。然而,“生产”这个词是有问题的。它似乎表现为:

10欧元�生产商chez Asos be

正如你所看到的,它正在努力处理“é”字符

我该如何着手解决这个问题?在过去的几个小时里,我一直在互联网上搜索和玩弄代码,但一点运气都没有!我对Java非常陌生,所以很难了解它


提前感谢。

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


否则,问题不在于读取响应,而在于您对该响应字符串所做的操作。

“它似乎将其呈现为”。在哪里渲染?无论如何,帮你自己一个忙,研究一下这个顺便说一句:在编程中没有“外来字符”(对谁来说是外来的?)你可能是指非ascisorry,我的意思是当我使用System.out.println(string)输出字符串时;,控制台正以这种方式显示它。你说的外国角色是对的,我的意思是外国的,但那当然是不正确的术语。太好了,非常感谢!我知道响应中的字符编码,但没有意识到这可以传递到inputStream。通过这样做解决了这个问题:bf=新的BufferedReader(新的InputStreamReader(connection.getInputStream(),“ISO-8859-1”);