El lenguaje Java nos da la capacidad de acceder a ficheros que tengan diferentes codificaciones. Posiblemente, muchos de nuestros ficheros vengan codificados en ISO Latin 1, o lo que es lo mismo ISO-8859-1, Latin Alphabet No. 1.
Al existir diferentes codificaciones para el contenido, Java nos permite indicar el tipo de contenido al que accedemos, para poderlo leer los ficheros de la forma correcta.
Pero vamos por partes, lo primero que haremos será abrir el fichero. Para ello y como vimos en el artículo leer un fichero de texto con Java, necesitaremos de un BufferedReader.
BufferedReader in = new BufferedReader();
Al BufferedReader tendremos que proveerlo de un stream de entrada, o lo que es lo mismo un InputStreamReader.
BufferedReader in = new BufferedReader(new InputStreamReader());
El InputStreamReader será la clave, ya al InputStreamReader podemos indicarle un charset de entrada. Es decir, el tipo de codificación que queremos.
En este caso, si queremos leer un fichero en ISO Latin 1 deberemos de utilizar el charset «8859_1». Pero al InputStreamReader le falta el origen, el nombre del fichero. Es decir, será de la siguiente forma:
new InputStreamReader(new FileInputStream("FicheroISO1.txt"), "8859_1")
Asegúrate que el fichero tiene un encoding ISO-8859-1, Latin Alphabet No. 1.
El código de la instanciación incial quedaría de la siguiente forma:
BufferedReader in = new BufferedReader(
new InputStreamReader(new FileInputStream("FicheroISO1.txt"), "8859_1"));
Ahora solo nos quedará leer el contenido del fichero, como hacíamos en leer un fichero de texto con Java.
String sCadena;
while ((sCadena = in.readLine())!=null) {
System.out.println(sCadena);
}
Puedes echar un vistazo a los encodings soportados en Java 7.