Centro de Información

UTF-8

El formato UTF-8 es el formato de codificación más común para los caracteres Unicode. Un carácter codificado en UTF-8 requiere variable de 1 a 4 bytes. UTF-8 está optimizado para el almacenamiento de caracteres ASCII. En el rango ASCII con valores de 0 a 127 en la codificación UTF-8, solo se utiliza un byte por carácter, el valor de este byte es el mismo valor que en la codificación ASCII. Por lo tanto, la codificación UTF-8 es especialmente adecuada para textos que constan principalmente de caracteres ASCII o ANSI y contienen solo algunos otros caracteres, como es el caso, por ejemplo, en inglés o en textos de la mayoría de los idiomas europeos.

Mientras que los primeros 128 caracteres (ASCII) necesitan un byte para la codificación, los siguientes 1920 caracteres necesitan dos bytes. Estos caracteres son caracteres latinos con marcas diacríticas como las diéresis alemanas (Ä, Ö ..), o letras griegas y cirílicas. Se utilizan cuatro bytes solo para caracteres raramente utilizados, como caracteres inusuales chinos, japoneses y coreanos.

Uso

Especialmente en Internet y en las áreas de transmisión de datos, la codificación UTF-8 se ha vuelto cada vez más importante en los últimos años. Este desarrollo fue apoyado por el World Wide Web Consortium, que recomienda UTF-8 como la codificación predeterminada para XML y HTML, o el Internet Engineering Task Force, que requiere que todos los nuevos protocolos de Internet admitan UTF-8. Actualmente, más del 97% de todas las páginas de Internet están codificadas en UTF-8, lo que hace que UTF-8 sea la codificación más extendida en la web. Los caracteres con nombre (entidades HTML; HTML entities), que solían estar muy extendidos, también están desapareciendo cada vez más de los textos fuente de las páginas de Internet y están siendo reemplazados por caracteres codificados en UTF-8 en la actualidad.

Por el contrario, UTF-8 se usa con menos frecuencia dentro de los programas. Por ejemplo, Windows usa UTF-16 internamente.

Ventajas y Desventajas

Una de las principales ventajas de UTF-8 es el bajo requerimiento de memoria de los caracteres preferidos. Al almacenar un texto en inglés que solo consta de los caracteres A-Z, a-z, 0-9 y signos de puntuación comunes, UTF-8 requiere la mitad de espacio de almacenamiento que UTF-16 e incluso solo una cuarta parte del espacio de almacenamiento de UTF-32. UTF-8 se administra con solo un byte para estos caracteres, mientras que UTF-32 siempre requiere cuatro bytes por carácter y UTF-16 al menos dos bytes. Sin embargo, todos los caracteres se pueden mapear con UTF-8, lo que no es posible con otras codificaciones como ASCII o ANSI, que también solo requieren un byte para sus caracteres.

Una desventaja de UTF-8 es el tamaño más grande cuando se utilizan muchos de los caracteres no preferidos, que son caracteres que requieren 3 o 4 bytes. En tales casos, otras codificaciones serían más eficientes en el espacio.

Otra desventaja es que debido al número variable de bytes por carácter, no es fácil acceder a un carácter específico en el texto, ni tampoco es fácil determinar la longitud de un texto codificado en UTF-8. En ambos casos, primero se deben revisar todos los bytes e interpretarlos individualmente. En codificaciones como UTF-32 esto es mucho más fácil: debido a que cada carácter tiene exactamente 4 bytes, la longitud de un texto se puede determinar directamente en función del número de bytes (bytes / 4) y también es posible saltar directamente al n-ésimo carácter en el texto sin conocer el texto porque la posición del byte inicial se puede obtener automáticamente a partir de cuatro veces la posición del carácter.

Marca de Orden de Bytes

La marca de orden de bytes (Byte Order Mark, BOM) de UTF-8 es la secuencia de bytes EF BB BF, que puede aparecer como los caracteres  si el programa no puede tratar con UTF-8. El problema del orden de bytes no surge en la codificación UTF-8, pero es mejor usar una BOM, para caracterizar qué codificación se usa. Sin embargo, una clara distinción no es 100% clara, ya que, por supuesto, en el formato ANSI también se permiten cadenas como  que podrían suceder en teoría al menos al principio de un archivo.