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

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

90 голосов
/ 11 февраля 2011

Я пытаюсь прочитать файл 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? Спасибо!

Ответы [ 3 ]

168 голосов
/ 11 февраля 2011

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

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));
14 голосов
/ 17 июня 2013
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) {

}

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

4 голосов
/ 02 марта 2018

Я сталкиваюсь с одной и той же проблемой каждый раз, когда находит специальный символ, помечающий его как as.Чтобы решить эту проблему, я попытался использовать кодировку: ISO-8859-1

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("txtPath"),"ISO-8859-1"));

while ((line = br.readLine()) != null) {

}

Надеюсь, это может помочь любому, кто увидит этот пост.

...