domingo, 9 de septiembre de 2012

UTF-8

UTF- 8 (8-bit Unicode Transformation Format), es un formato de codificación de caracteres Unicode e ISO 10646 utilizando símbolos de longitud variable.
Fue ideado por Kenneth L. Thompson bajo los criterios de diseño de Robert C. Pike en 1992. Ambos lo implementaron e implantaron en su sistema operativo “Plan 9 from Bell Labs”.

Descripción
UTF-8 divide los caracteres Unicode en varios grupos, en función del número de bytes necesarios para codificarlos. El número de bytes depende exclusivamente del código de carácter asignado por Unicode y del número de bytes necesario para representarlo.

Distribución de caracteres:
·        Caracteres codificados con un byte: Los incluidos en US-ASCII, un total de 128 caracteres.

·        Caracteres codificados con dos bytes: 1920 caracteres. Este grupo incluye los caracteres romances más signos diacríticos, y los alfabetos griego, cirílico, copto, armenio, hebreo, árabe, siríaco y Thaana entre otros.


·      Caracteres codificados con tres bytes: Caracteres del plano básico multilingüe de Unicode, que unido al grupo anterior, incluye la práctica totalidad de caracteres de uso común, entre ellos los caracteres del grupo CJK: Chino, japonés y coreano.

·        Caracteres codificados con cuatro bytes: Caracteres del plano suplementario multilingüe. Símbolos matemáticos y alfabetos clásicos para uso principalmente académico: Lineal B silábico e ideográfico, alfabeto persa, fenicio... Y el plano suplementario ideográfico: caracteres Han de uso poco común.


Ventajas y desventajas de UTF-8

Ventajas
ü  UTF-8 permite codificar cualquier carácter Unicode.
ü  Fácil identificación. Es posible identificar claramente una muestra de datos como UTF-8 mediante un sencillo algoritmo. La probabilidad de una identificación correcta aumenta con el tamaño de la muestra.
ü  UTF-8 ahorrará espacio de almacenamiento para textos en caracteres latinos, donde los caracteres incluidos en US-ASCII son comunes, cuando se compara con otros formatos como UTF-16.
ü  Una secuencia de bytes para un carácter jamás será parte de una secuencia más larga de otro carácter por contener información de sincronización.
ü  Al ser compatible con US-ASCII se puede utilizar en shell scripts y en llamadas a procedimientos que esperan strings terminados en bytes nulos.
ü  No es necesario el uso del Byte order mask ya que UTF-8 trabaja con bytes y no palabras.

Desventajas
v  UTF-8 utiliza símbolos de longitud variable; eso significa que diferentes caracteres pueden codificarse con distinto número de bytes. Es necesario recorrer la cadena desde el inicio para encontrar el carácter que ocupa una determinada posición.
v  Los caracteres ideográficos usan 3 bytes en UTF-8, pero sólo 2 en UTF-16. Así, los textos chinos, japoneses o coreanos ocupan más espacio cuando se representan en UTF-8.
v  UTF-8 ofrece peor rendimiento que UTF-16 y UTF-32 en cuanto a carga computacional.