18 dic 2017

Las tildes y la ñ en la entrada y salida de datos en Java con NetBeans


Uno de los problemas iniciales con los que nos encontramos al leer cadenas de texto en Java, con, por ejemplo Scanner, es la utilización de tildes, ya que dependiendo de la configuración de las instrucciones de entrada, de los proyectos e incluso del propio Netbeans, los resultados pueden ser muy distintos.
Si leemos una cadena de texto que contenga tildes y la ñ, en un proyecto por defecto creado en Java con Netbeans en Windows, de esta forma:
import java.util.Scanner;
public class Tildes {
    public static void main(String[] args) {
      Scanner sc= new Scanner(System.in);
      String cadena;
      System.out.print("Entrada: ");
      cadena= sc.nextLine();
      System.out.printf("Salida: %s%n", cadena);
    }
}


Obtenemos este resultado:

Esto es debido a que la codificación que utiliza Netbeans por defecto para los proyectos, es UTF-8, mientras que la que utiliza Windows en español es, ISO-8859-1 (o el superconjunto Windows-1252), como podemos ver en las propiedades del proyecto:


Una posible solución es cambiar en el desplegable Encoding: y poner el valor Windows-1252, o bien ISO-8859-1:

Pero esto puede suponer un problema, si estamos leyendo o escribiendo ficheros de texto, porque nos los escribirá por defecto con la nueva codificación, como bien nos indica:
 

Una solución alternativa, es dejar el proyecto con la codificación UTF-8, por si leemos o escribimos ficheros de texto con esta codificación, y especificar la codificación en la entrada de datos de Scanner, de esta forma:


Scanner sc= new Scanner (System.in, "ISO-8859-1");


Con las dos soluciones obtendremos el resultado deseado:

Una solución más drástica sería cambiar la codificación por defecto (charset) para todos los proyectos Netbeans, esto lo haríamos en el fichero de configuración netbeans.conf, situado en el directorio raíz de nuestra instalación de Netbeans ( habitualmente c:\program files\Netbeans-xxx\). La línea:
netbeans_default_options="-J-Dfile.encoding=UTF-8 -J-client -J-Xss2m ........."

7 comentarios:

  1. Muchas gracias me sirvió con lass tildes

    ResponderEliminar
  2. Brother te agradezco, me presentaste una solución muy sencilla

    ResponderEliminar
  3. Muy bueno me sirvió, para los acentos y la ñ. Por las dudas no voy a cambiar la codificación en "netbeans.conf", solo cambiare el "Encoding" dependiendo del proyecto.

    ResponderEliminar