Estoy tratando de leer desde un archivo text/plain
a través de Internet, línea por línea. El código que tengo en este momento es:Lectura de InputStream como UTF-8
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 con el fin de 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 hacer out.println("é");
sin problemas.
¿Alguna idea para leer del InputStream
como UTF-8? ¡Gracias!
El protocolo HTTP especifica la codificación. ¿Por qué no usas una API de biblioteca que maneja eso para ti? Nunca deberías adivinar la codificación de esta manera. No quiero ser negativo: ¡lo estás haciendo bien! Solo me pregunto si no hay una manera más fácil. – tchrist
No tendré acceso al servidor que está sirviendo el archivo 'text/plain', desafortunadamente, y no está usando una codificación UTF-8. No estaba al tanto de ninguna buena biblioteca de red; ¿alguna sugerencia? –
Al mirar [docs] (http://download.oracle.com/javase/6/docs/api/java/net/URL.html), no creo que deba especificar la codificación en absoluto. ¡Me sorprende que te den una transmisión de bytes! Usted tiene acceso a [URLConnection] subyacente (http://download.oracle.com/javase/6/docs/api/java/net/URLConnection.html), desde donde puede verificar la codificación de contenido, luego abra un InputStreamReader con el argumento correcto. Una comprobación rápida de la fuente no muestra nada que parezca hacer eso por usted, lo que parece bastante condenado y propenso a errores, así que probablemente me haya perdido algo. – tchrist