EmoArt
Publicar
Glosario

Qué es UTF-8

Última actualización: 2026-05-17·Aprox. 4 min

Este artículo se lee en unos 4 minutos.

Páginas web, APIs, cabeceras de correo, bases de datos - el estándar de facto de la codificación de caracteres moderna es UTF-8.Representa los puntos de código Unicode en longitud variable de 1 a 4 bytes, manteniendo compatibilidad con ASCII y pudiendo manejar todos los caracteres Unicode, incluidos los emojis. Funciona como infraestructura de distribución de texto digital en lugares que normalmente no percibimos.

Definición

UTF-8 (8-bit Unicode Transformation Format) es una de las formas de codificación que convierte puntos de código Unicode en secuencias de bytes. Fue diseñada por Ken Thompson y Rob Pike en 1992 y posteriormente estandarizada como RFC 3629. Representa todo el rango Unicode (U+0000 a U+10FFFF) con 1 a 4 bytes por carácter.

Estructura de bytes

Rango de puntos de códigoBytesEjemplos
U+0000 - U+007F1 byteASCII (a, A, 0, !)
U+0080 - U+07FF2 bytesLatín extendido, griego, cirílico
U+0800 - U+FFFF3 bytesJaponés, chino, coreano
U+10000 - U+10FFFF4 bytesEmojis, escrituras antiguas, kanji suplementarios

Compatibilidad con ASCII

Una característica de diseño clave de UTF-8 es que representa ASCII (U+0000 - U+007F) directamente en 1 byte. Un archivo compuesto solo por caracteres alfanuméricos y símbolos de medio ancho se interpreta con la misma secuencia de bytes tanto como ASCII como UTF-8. Esta retrocompatibilidad, que permite a las herramientas de procesamiento de texto ASCII existentes manejar archivos UTF-8 sin dañarlos, impulsó su adopción en la web.

Comparación con UTF-16 / UTF-32

FormatoPor carácterUso principalManejo de emojis
UTF-81 a 4 bytesWeb, API, archivos4 bytes
UTF-162 o 4 bytesRepresentación interna de Java, JSPar sustituto, 4 bytes
UTF-324 bytes fijosProcesamiento interno (raro)4 bytes fijos

Su posición como estándar web

El W3C recomienda UTF-8 como codificación de caracteres en HTML5, y más del 98% de las páginas web modernas se sirven en UTF-8. Cabeceras HTTP, JSON, XML, cuerpo de correos, nombres de archivo, codificación porcentual de URLs - UTF-8 es la base en todos los rincones de la web. Prácticamente no hay razón para elegir otra codificación en un proyecto nuevo.

BOM (Byte Order Mark)

Existe la práctica de añadir los 3 bytes EF BB BF como BOM al inicio de un archivo UTF-8, pero el estándar web no recomienda el BOM en UTF-8. Los archivos UTF-8 con BOM son generados por herramientas antiguas de Windows (como el Bloc de notas), y en herramientas de Linux / Mac y servidores web pueden causar problemas al ser tratados como bytes inesperados. La práctica moderna es guardar los archivos sin BOM.

Consideraciones prácticas

  • Confusión entre caracteres y bytes: un carácter CJK ocupa 3 bytes en UTF-8 y un emoji 4 bytes. Juzgar la longitud por bytes genera confusión con caracteres multibyte
  • Juego de caracteres de la base de datos: el utf8 de MySQL en realidad solo maneja hasta 3 bytes, una implementación incompleta. Para emojis hay que elegir utf8mb4
  • Codificación de URL: incluir caracteres CJK o emojis en una URL implica codificar la secuencia de bytes UTF-8 con codificación porcentual
  • Lectura de archivos: abrir un archivo UTF-8 erróneamente como Shift_JIS produce caracteres corruptos (habitual con CSV antiguos)

Errores comunes

  • ❌ «UTF-8 es de 8 bits fijos» → ✅ Es de longitud variable con 8 bits como unidad mínima
  • ❌ «UTF-8 es más lento que UTF-16» → ✅ Depende del contenido y del procesamiento. Con mucho texto CJK, UTF-16 puede ser más corto
  • ❌ «El BOM es obligatorio» → ✅ En UTF-8, lo estándar es no usar BOM

Términos relacionados

  • Unicode - el estándar de caracteres que UTF-8 representa
  • UTF-16 - otra forma de codificación Unicode
  • Emoji - se representa con 4 bytes en UTF-8

¿Te resultó útil este artículo?