Estou tentando ler um text/plain
arquivo da Internet, linha por linha. O código que tenho agora é:
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);
}
O arquivo test.txt
,, contém ¡Hélló!
, que estou usando para testar a codificação.
Quando reviso o OutputStream
( out
), vejo como > ¡Hélló!
. Não acredito que isso seja um problema com o, OutputStream
já que posso fazer isso out.println("é");
sem problemas.
Alguma idéia para ler o formato InputStream
UTF-8? Obrigado!
java
utf-8
inputstream
Chris Kuehl
fonte
fonte
text/plain
arquivo, infelizmente, e ele não está usando a codificação UTF-8. Eu não conhecia nenhuma boa biblioteca de rede; alguma sugestão?Respostas:
Resolveu meu próprio problema. Está linha:
precisa ser:
ou desde Java 7:
fonte
CharsetDecoder dec
argumento. Este é o mesmo bug de design Java que osOutputStreamWriter
construtores têm: apenas um dos quatro realmente condescende em dizer quando algo dá errado. Você também tem que usar oCharsetDecoder dec
argumento sofisticado aqui. A única coisa segura e sensata a fazer é considerar todos os outros construtores obsoletos, porque não se pode confiar neles.StandardCharsets.UTF_8
Experimente isto, .. :-)
fonte
Eu tive o mesmo problema toda vez que ele encontrava um caractere especial e o marcava como . para resolver isso, tentei usar a codificação: ISO-8859-1
Espero que isso possa ajudar quem vir este post.
fonte