Cuándo accedemos a un fichero tenemos que tener cuidado en su codificación. Como ya vimos al leer un fichero en ISO Latin 1. En este caso vamos a leer un fichero UTF-8.
Hay que tener especial cuidado con la codificación del fichero ya que dependiendo del encoding hay carácteres que se representan de diferente forma, o simplemente que no se representan.
Los pasos para leer el fichero UTF-8 son muy sencillos. Ya que la lectura se hace sobre un BufferedReader, al cual hay que darle un InputStreamReader de entrada.
BufferedReader in = new BufferedReader(new InputStreamReader());
Y será sobre el InputStreamReader donde indiquemos el encoding del fichero. En nuestro caso al ser uft-8 deberemos de utilizar el charset «uft-8». Quedándonos la siguiente línea de código:
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("FicheroUTF8.txt"), "utf-8"));
Cabe notar que el origen de lectura, es decir, el fichero, lo indicaremos con un FileInputStream.
Ya solo nos quedará recorrer el fichero mediante un bucle:
String sCadena;
while ((sCadena = in.readLine())!=null) {
System.out.println(sCadena);
}
Al trabajar con los encoding hay que tener especial cuidado de controlar la excepción UnsupportedEncodingException para aquellos encodings no soportados. Y al acceder a ficheros la típica excepción IOException.