Java y caracteres japoneses
El programa que uso para repasar japonés está hecho en Java. Según voy avanzando en el número de Kanji aprendidos, voy descubriendo que algunas de las palabras clave están incompletas o tienen faltas de ortografía. Hace un tiempo ya implementé una solución consistente en un fichero con las correcciones, lo cual fue bastante sencillo. El problema ha sido el último error que he encontrado, que no afecta a la palabra clave, sí no a el Kanji mostrado.
Cuando salía la palabra clave “parcela” debería aparecer su kanji correspondiente (壌) pero en su lugar aparecía el kanji de “deferencia” (譲). Me puse a investigar como usar caracteres japoneses en Java y en realidad es bastante sencillo. Java trabaja con Unicode, por lo que se pueden incluir estos caracteres tranquilamente en el código. Por ejemplo, este código sería correcto:
char kanji = '譲';
Como la idea es seguir usando un fichero de texto para tener todas las correcciones, intenté guardar el kanji en el fichero y después recuperarlo, pero por algún motivo no conseguí hacerlo funcionar. Pasé entonces a otra solución. En vez de guardar el kanji, guardar su código de Unicode, que en este caso sería u58CC.
Por lo tanto necesitaba dos cosas, obtener el código Unicode de un carácter japonés, y obtener el carácter japonés a partir de su código Unicode.
StackOverflow, como casi siempre, tiene la solución.
Pasar de kanji a unicode
char kanji = '譲';
String unicode = "\u" + Integer.toHexString(kanji | 0x10000).substring(1);
Pasar de unicode a kanji
String unicode = "\u58CC";
char kanji = (char) Integer.parseInt( s.substring(2), 16 );
¡Mucho más fácil de lo que yo pensaba!
Y por último, una página muy útil para obtener el valor Unicode de cualquier caracter y viceversa.