0

我正在尝试从 URL 读取内容,但它确实返回了奇怪的符号而不是“è”、“à”等。

这是我正在使用的代码:

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")

但我无法让它工作。

例如,如果我的 url 内容包含

è uno dei più

我明白了

è uno dei più

我错过了什么?

4

2 回答 2

1

从你的例子来看。您确实收到了多字节 UTF-8 字节流,但您的文本编辑器读取为 ISO-8859-1。告诉您的编辑器将字节读取为 UTF-8!

于 2013-03-19T18:58:36.603 回答
0

我真的不知道为什么这不起作用,但是 Java 7 方法是使用 StandardCharsets.UTF_8 见

http://docs.oracle.com/javase/7/docs/api/java/nio/charset/StandardCharsets.html

在(新)构造函数 InputStreamReader(InputStream in, Charset cs) 中,请参阅

http://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html

于 2013-03-19T18:48:38.540 回答