Estoy intentando leer de un text/plainarchivo 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.txtcontiene ¡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 OutputStreamya que puedo hacerlo out.println("é");sin problemas.
¿Alguna idea para leer en formato InputStreamUTF-8? ¡Gracias!
java
utf-8
inputstream
Chris Kuehl
fuente
fuente

text/plainDesafortunadamente, 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 decargumento. Este es el mismo error de diseño de Java que tienen losOutputStreamWriterconstructores: solo uno de los cuatro realmente condesciende a decirte cuando algo sale mal. De nuevo, también tienes que usar el eleganteCharsetDecoder decargumento. 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_8Prueba 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