Java-处理外来字符
因此,我有一些Java代码,用于获取HTML页面的内容,如下所示: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
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”);