Buscar
Social
Ofertas laborales ES
« Java 7, divide y vencerás. | Main | Java 7: ejemplos prácticos »
viernes
ago142015

Java 7: leyendo ficheros indicando el encoding

El escenario es el siguiente: tenemos un fichero de texto, desarrollado en codificación UTF-8, que debemos leer en nuestro sistema.


El contenido del fichero es el siguiente:

abcdefghijklmnñopqrstuvwxyz

áéíóú

pingüino


Para realizar la lectura, ejecutamos el siguiente código:

package javahispano;

import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class Main {

	private static final String FILE = "pruebasEncodingJava7_UTF8.txt";
	private static final String PATH = "/home/jaimecl/Documentos/pruebas/";
	private static final String UTF_8 = "UTF-8";
	private static final String ISO_8859_1 = "ISO-8859-1";

	public static void main(String args[]) {

		/* Obtenemos el fichero */
		Path file = Paths.get(PATH, FILE);

		try {
			/*
			 * Leemos todas las líneas del mismo en con encoding ISO_8859_1 y
			 * mostramos la información por pantalla
			 */
			Charset charsetISO88591 = Charset.forName(ISO_8859_1);

			System.out.println("\nLeyendo el fichero con encoding "
					+ ISO_8859_1 + "\n");
			List linesISO88591 = Files.readAllLines(file,
					charsetISO88591);

			for (String lineISO88591 : linesISO88591) {
				System.out.println(lineISO88591);
			}

			/* Análogo al punto anterior, con encoding UTF_8 */
			Charset charsetUTF8 = Charset.forName(UTF_8);
			System.out.println("\nLeyendo el fichero con encoding " + UTF_8
					+ "....\n");

			List linesUTF8 = Files.readAllLines(file, charsetUTF8);

			for (String lineUTF8 : linesUTF8) {
				System.out.println(lineUTF8);
			}

		} catch (IOException e) {
			System.out.println(e);
		}
	}
}
}

¿Cuál es la salida del mismo?

Leyendo el fichero con encoding ISO-8859-1

abcdefghijklmnñopqrstuvwxyz

áéíóú

pingüino



Leyendo el fichero con encoding UTF-8....


abcdefghijklmnñopqrstuvwxyz

áéíóú

pingüino


Como podemos ver, esta característica puede ser de mucha utilidad en estos casos. ¡A tener en cuenta, developers!

PrintView Printer Friendly Version

EmailEmail Article to Friend

References (2)

References allow you to track sources for this article, as well as articles that were written in response to this article.

Reader Comments (1)

Con Java7 puedes mejorar el tema de algunos charsets, los que se garantiza que existirán en las distintas plataformas:

* StandardCharsets.ISO_8859_1
* StandardCharsets.UTF_8

No hay necesidad de recuperarlos mediante:
Charset charsetISO88591 = Charset.forName(ISO_8859_1);


Más información en el javadoc correspondiente.

agosto 14, 2015 | Registered CommenterRamón Rial

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>