32.    Codificación de caracteres [encoding]

Java trabaja con caracteres usando 16 bits por carácter, según la norma internacional Unicode. Hay varios convenios para utilizar bytes (8 bits) para representar caracteres (16 bits). Los más habituales son:

iso-8859-1

Sólo sirve para caracteres que usan 8 bits (es decir, de los 16 bits del carácter, los 8 primeros son ceros). Para transformar el carácter en un byte, simplemente se ignoran los 8 primeros bits. Para transformar un byte en carácter, se le añaden 8 bits delante.

Esta codificación es suficiente para los lenguajes del suroeste de Europa (lenguas latinas).

UTF-8

Sirva para codificar cualquier carácter unicode.

El convenio se especifica en la norma RFC2279.

Puede ver una descripción en [http://es.wikipedia.org/wiki/UTF-8].

UTF-16BE
UTF-16LE

Estos formatos sirven para codificar cualquier carácter unicode. Se limitan a partir los 16 bits del carácter en 2 bytes de 8 bits cada uno. La diferencia entre los dos formatos es el orden en que se ponen los 2 bytes.

El convenio se especifica en la norma RFC2781.

Puede ver una descripción en la [http://en.wikipedia.org/wiki/UTF-16/UCS-2].

Si no se dice nada, se utiliza el valor por defecto, que puede conocerse por medio del método:

Charset Charset.defaultCharset()

El conjunto de todas las codificaciones disponibles depende de cada plataforma. Para conocer los que tiene puede usar el método

SortedMap<String, Charset> Charset.availableCharsets()

Temas relacionados

Vademécum
Ejemplos
Utilización en ficheros (lectura y escritura)