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!
1
El protocolo HTTP especifica la codificación. ¿Por qué no utiliza una API de biblioteca que se encarga de eso por usted? Nunca debería tener que adivinar la codificación de esta manera. No quiero ser negativo: ¡lo estás haciendo genial! Me pregunto si no hay una forma más fácil.
—
tchrist
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?
Mirando los documentos , no creo que tenga que especificar la codificación en absoluto. ¡Me sorprende que te den un flujo de bytes! Tiene acceso a URLConnection subyacente , desde el cual puede verificar Content-Encoding, luego abrir un InputStreamReader con el argumento correcto. Una verificación rápida de la fuente no muestra nada que parezca hacer eso por usted, lo que parece bastante tonto y propenso a errores, por lo que probablemente me perdí algo.
—
tchrist