Estoy intentando leer de un text/plain
archivo a través de Internet, línea por línea. El código que tengo ahora es:
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);
}
El archivo, test.txt
contiene ¡Hélló!
, que estoy usando para probar la codificación.
Cuando reviso el OutputStream
( out
), lo veo como > ¡Hélló!
. No creo que esto sea un problema con el OutputStream
ya que puedo hacerlo out.println("é");
sin problemas.
¿Alguna idea para leer en formato InputStream
UTF-8? ¡Gracias!
java
utf-8
inputstream
Chris Kuehl
fuente
fuente
text/plain
Desafortunadamente, no tendré acceso al servidor que está sirviendo el archivo y no está usando una codificación UTF-8. No conocía ninguna buena biblioteca de red; ¿alguna sugerencia?Respuestas:
Resolví mi propio problema. Esta línea:
necesita ser:
o desde Java 7:
fuente
CharsetDecoder dec
argumento. Este es el mismo error de diseño de Java que tienen losOutputStreamWriter
constructores: solo uno de los cuatro realmente condesciende a decirte cuando algo sale mal. De nuevo, también tienes que usar el eleganteCharsetDecoder dec
argumento. Lo único seguro y sensato es considerar que todos los demás constructores están en desuso, porque no se puede confiar en que se comporten.StandardCharsets.UTF_8
Prueba esto,.. :-)
fuente
Me encontré con el mismo problema cada vez que encuentra un carácter especial que lo marca como . para resolver esto, intenté usar la codificación: ISO-8859-1
Espero que esto pueda ayudar a cualquiera que vea esta publicación.
fuente