Lectura de InputStream como UTF-8

Estoy tratando de leer de un archivo de text/plain 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 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 encoding.

Cuando reviso OutputStream ( out ), lo veo como > ¬°H√©ll√≥! . No creo que esto sea un problema con OutputStream ya que puedo hacer out.println("é"); sin problemas.

¿Alguna idea para leer forma el InputStream como UTF-8? ¡Gracias!

Resolvió mi propio problema. Esta línea:

 BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 

necesita ser:

 BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8")); 

o desde Java 7:

 BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8)); 
  String file = ""; try { InputStream is = new FileInputStream(filename); String UTF8 = "utf8"; int BUFFER_SIZE = 8192; BufferedReader br = new BufferedReader(new InputStreamReader(is, UTF8), BUFFER_SIZE); String str; while ((str = br.readLine()) != null) { file += str; } } catch (Exception e) { } 

Prueba esto,.. 🙂

Me encontré con el mismo problema cada vez que encuentra un carácter especial que lo marca como . para resolver esto, traté de usar la encoding: ISO-8859-1

 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("txtPath"),"ISO-8859-1")); while ((line = br.readLine()) != null) { } 

Espero que esto pueda ayudar a cualquiera que vea esta publicación.