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: