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.