Si una matriz de bytes contiene texto no Unicode, puede convertir el texto a Unicode con uno de los métodos del constructor String
. A la inversa, puedes convertir un objeto String
en una matriz de bytes de caracteres no Unicode con el método String.getBytes
. Al invocar cualquiera de estos métodos, se especifica el identificador de codificación como uno de los parámetros.
El ejemplo que sigue convierte caracteres entre UTF-8 y Unicode. UTF-8 es un formato de transmisión para Unicode que es seguro para los sistemas de archivos UNIX. El código fuente completo del ejemplo está en el archivo StringConverter.java
.
El programa StringConverter
comienza creando un String
que contiene caracteres Unicode:
String original = new String("A" + "\u00ea" + "\u00f1" + "\u00fc" + "C");
Cuando se imprime, el String
llamado original
aparece como:
AêñüC
Para convertir el objeto String
a UTF-8, invoca el método getBytes
y especifica el identificador de codificación apropiado como parámetro. El método getBytes
devuelve una matriz de bytes en formato UTF-8. Para crear un objeto String
a partir de un array de bytes no Unicode, invoca el constructor String
con el parámetro encoding. El código que realiza estas llamadas se encierra en un bloque try
, por si la codificación especificada no está soportada:
El programa StringConverter
imprime los valores de las matrices utf8Bytes
y defaultBytes
para demostrar un punto importante: La longitud del texto convertido puede no ser la misma que la del texto de origen. Algunos caracteres Unicode se traducen en bytes individuales, otros en pares o tripletes de bytes.
El método printBytes
muestra las matrices de bytes invocando el método byteToHex
, que está definido en el archivo fuente, UnicodeFormatter.java
. Aquí está el método printBytes
:
A continuación se muestra la salida del método printBytes
. Observe que sólo el primer y el último byte, los caracteres A y C, son iguales en ambas matrices: