Uno de los problemas más comunes, cuando trabajamos en Castellano o en otros idiomas diferentes al inglés, es la representación de caracteres que no se encuentran en la codificación ASCII, representar la ñ para el castellano, o los simbolos del Euro (€), o Yen (¥) son generalmente una tarea engorrosa sino sabemos que implementación utilizar. Como la codificación ASCII es muy limitada, lo usual que se hace en estos casos es representar dichos caracteres en formato Unicode (Codificación de Caracteres universal, uniforme y único).Te explicaremos como representar cualquier caracter en formato unicode y transformarlo a String en Java.
Los caracteres en Unicode tienen una longitud de16 bits (UTF-8 / UTF-16 son los más utilizados) al igual que la longitud de los valores para el tipo de dato Char en Java, por lo que este tipo de dato puede almacenar cualquier caracter de estos.
Utilizaremos el método charAt(int index) de la clase String, que retorna un caracter Unicode en el indice que le especifiquemos, y si lo combinamos con el método append() de la Clase StringBuilder, la cual acepta l tipo de dato char tenemos la combinación que necesitamos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | public class UnicodeChars { public static void main(String[] argv) { StringBuffer b = new StringBuffer(); for (char c = 'a'; c <= 'd'; c++) { b.append(c); } b.append('\u00a5'); // simbolo del Yen b.append('\u01FC'); // simbolo Romano AE acentuado b.append('\u0391'); // Letra Alpha Griega b.append('\u03A9'); // Letra Omega Griega b.append('\u00d1'); // Letra Ñ Castellano for (int i = 0; i < b.length(); i++) { System.out.println("Caracter #" + i + " es " + b.charAt(i)); } System.out.println("Toda la cadena " + b); } } |
Esta clase nos genera una salida como esta
Caracter #1 es b
Caracter #2 es c
Caracter #3 es d
Caracter #4 es ¥
Caracter #5 es ?
Caracter #6 es ?
Caracter #7 es O
Caracter #8 es Ñ
Toda la cadena abcdefghijklmnopqrstuvwxyz¥??OÑ





Buen día Carlos, muy buen aporte, pero ¿cómo podría hacer para que al momento de ingresar un apalabra de tipo string que contenga la letra Ñ mediante Scanner la procese como Ñ?
Hola Norfin_88,
A que te refieres cuando dices mediante Scanner?