Чтение 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) {
}
Попробуйте это,..: -)