我正在尝试从网址中读取内容,但确实会返回奇怪的符号,而不是“è”,“à”等。
这是我正在使用的代码:
public static String getPageContent(String _url) {
URL url;
InputStream is = null;
BufferedReader dis;
String line;
String text = "";
try {
url = new URL(_url);
is = url.openStream();
//This line should open the stream as UTF-8
dis = new BufferedReader(new InputStreamReader(is, "UTF-8"));
while ((line = dis.readLine()) != null) {
text += line + "\n";
}
} catch (MalformedURLException mue) {
mue.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
try {
is.close();
} catch (IOException ioe) {
// nothing to see here
}
}
return text;
}
我看到了其他类似的问题,所有这些问题都得到了回答,如
Declare your inputstream as
new InputStreamReader(is, "UTF-8")
但我无法让它发挥作用。
例如,如果我的网址内容包含
è uno dei più
我得到了
è uno dei più
我缺少什么?
答案 0 :(得分:1)
以你的榜样来判断。您确实收到一个多字节UTF-8字节流,但您的文本编辑器读入ISO-8859-1。告诉编辑器将字节读为UTF-8!
答案 1 :(得分:0)
我真的不知道为什么这不起作用,不过Java 7的方式是使用StandardCharsets.UTF_8参见
http://docs.oracle.com/javase/7/docs/api/java/nio/charset/StandardCharsets.html
在(新)构造函数InputStreamReader(Charset cs中的InputStream)中,参见
http://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html