Чтение InputStream как UTF-8

Я пытаюсь читать из файла text/plain через Интернет, по очереди. Код, который у меня есть сейчас:

URL url = new URL("http://kuehldesign.net/test.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
LinkedList<String> lines = new LinkedList();
String readLine;

while ((readLine = in.readLine()) != null) {
    lines.add(readLine);
}

for (String line : lines) {
    out.println("> " + line);
}

Файл test.txt содержит ¡Hélló!, который я использую для проверки кодировки.

Когда я просматриваю OutputStream (out), я вижу его как > ¬°H√©ll√≥!. Я не верю, что это проблема с OutputStream, так как я могу сделать out.println("é"); без проблем.

Любые идеи для чтения образуют InputStream как UTF-8? Спасибо!

Ответ 1

Решил мою собственную проблему. Эта строка:

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

должно быть:

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));

или, поскольку Java 7:

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8));

Ответ 2

    String file = "";

    try {

        InputStream is = new FileInputStream(filename);
        String UTF8 = "utf8";
        int BUFFER_SIZE = 8192;

        BufferedReader br = new BufferedReader(new InputStreamReader(is,
                UTF8), BUFFER_SIZE);
        String str;
        while ((str = br.readLine()) != null) {
            file += str;
        }
    } catch (Exception e) {

    }

Попробуйте это,..: -)