¿Qué son UTF-8 y Unicode? Puntos de código, codificación en bytes y por qué ganó UTF-8
Publicado el 11/3/2026 · 4 min de lectura · Herramientas para desarrolladores
Daniel Okonkwo — Desarrollador front-end y redactor de Tecnología en OneKitly
Rendimiento web · Formatos de archivo
Verificado con 2 fuentes
Unicode es un único catálogo que da a cada carácter un número llamado punto de código, escrito como U+0041 para A o U+1F600 para una carita sonriente. UTF-8 es una regla para guardar esos números como bytes: los puntos de código hasta U+007F usan un byte, y los mayores usan dos, tres o cuatro bytes. UTF-8 ganó porque es retrocompatible con ASCII, no tiene ambigüedad de orden de bytes y mantiene compacto el texto en inglés mientras representa todas las escrituras del planeta.
Unicode asigna a cada carácter un punto de código; UTF-8 codifica esos puntos de código en uno a cuatro bytes. Así funciona y por qué venció a las alternativas.
Puntos de código frente a bytes
Conviene separar dos ideas. Un punto de código es un número abstracto que identifica un carácter en el catálogo Unicode, con independencia de cómo se almacene. Una codificación es la receta concreta que convierte ese número en bytes en disco o en la red. Unicode define actualmente puntos de código desde U+0000 hasta U+10FFFF, más de un millón de espacios, de los cuales unos 150 000 están asignados.
La notación U+ es solo hexadecimal, base 16. U+0041 es 65 en decimal, la letra A, y U+20AC es 8364 en decimal, un símbolo de moneda. Convertir entre la forma hexadecimal y el decimal o el binario es justo el tipo de cambio de base que maneja un conversor de bases, y así se comprueba a mano qué patrón de bytes debe producir un punto de código.
De uno a cuatro bytes, según el tamaño
UTF-8 es una codificación de longitud variable. Los puntos de código de U+0000 a U+007F, el rango ASCII original, se guardan en un solo byte cuyo bit superior es cero, así que el texto en inglés es idéntico byte a byte a los antiguos archivos ASCII. Los puntos de código de U+0080 a U+07FF ocupan dos bytes, U+0800 a U+FFFF tres, y todo hasta U+10FFFF, incluidos la mayoría de los emoji, cuatro.
El byte inicial anuncia la longitud mediante sus bits altos: una secuencia de dos bytes empieza por 110, de tres bytes por 1110, de cuatro bytes por 11110, y cada byte de continuación empieza por 10. Ese patrón autodescriptivo permite a un decodificador resincronizarse tras un byte corrupto y hace imposible confundir un byte de continuación con el inicio de un carácter.
Por qué UTF-8 venció a las alternativas
Los principales rivales eran UTF-16 y UTF-32. UTF-32 guarda cada punto de código en cuatro bytes fijos, fácil de indexar pero derrochador, cuadruplicando el tamaño del texto en inglés corriente. UTF-16 usa dos o cuatro bytes y antes dominó Windows y Java, pero necesita una marca de orden de bytes para decir qué extremo va primero y aún usa pares suplentes para los puntos de código grandes, reintroduciendo la longitud variable que quería evitar.
UTF-8 evita todo eso. Tiene un único orden de bytes canónico, no necesita marca y sigue siendo compatible byte a byte con la enorme base instalada de herramientas ASCII, así que un archivo UTF-8 lleno de inglés simple se abre correctamente en software anterior a Unicode. Esas virtudes prácticas, y no un decreto de comité, lo convirtieron en el estándar de la web, donde ahora cubre la abrumadora mayoría de las páginas.
Preguntas frecuentes
- ¿Es UTF-8 lo mismo que Unicode?
- No. Unicode es el catálogo que asigna a cada carácter un punto de código. UTF-8 es una forma de codificar esos puntos de código como bytes. Unicode dice cuál es el número; UTF-8 dice cómo guardarlo.
- ¿Cuántos bytes usa un emoji en UTF-8?
- La mayoría de los emoji simples están por encima de U+FFFF y ocupan cuatro bytes. Algunos emoji visibles son en realidad varios puntos de código unidos por uniones de ancho cero, así que en disco pueden ocupar muchos más bytes de los que sugiere un carácter.
- ¿Por qué mi texto muestra caracteres ilegibles como é?
- Es un desajuste: bytes escritos como UTF-8 se leen como una codificación de un byte tipo Latin-1, así que una secuencia de dos bytes aparece como dos caracteres erróneos. Declara y lee el archivo como UTF-8 en ambos extremos para corregirlo.
- ¿UTF-8 agranda los archivos para texto no inglés?
- A veces. Las lenguas de escritura latina se quedan cerca de un byte por carácter, pero escrituras como el chino o el japonés usan tres bytes por carácter en UTF-8 frente a dos en UTF-16. Para contenido mixto o mayormente latino, UTF-8 suele ser el más compacto en conjunto.
Artículos que podrían interesarte
Todas las guías →Herramientas relacionadas
Fuentes
¿Has detectado un error en este artículo?