Calculadora de tamaño en bytes UTF-8
Datos de entrada
| Texto | Héllo |
|---|
Calculadora de tamaño en bytes UTF-8
Introduce cualquier texto para conocer su tamaño en bytes UTF-8, su tamaño en bytes UTF-16 y el número de caracteres (puntos de código). Las letras ASCII ocupan un byte UTF-8 cada una, las letras acentuadas dos, la mayoría de las demás escrituras tres y los emojis cuatro, por lo que el tamaño en bytes de una cadena puede ser mayor que el número de caracteres que se ven.
Datos de entrada
Texto
Resultados
Introduce un valor para ver los resultados.
Tamaño
Tamaño en bytes UTF-8
Una cadena de texto y el número de bytes que ocupa no son lo mismo. En pantalla, una palabra es una sucesión de caracteres; en el almacenamiento y en la red es una secuencia de bytes, y rara vez coinciden ambas cuentas. Esta calculadora toma un texto y devuelve tres números: cuántos caracteres (puntos de código Unicode) contiene, cuántos bytes ocupa como UTF-8 y cuántos bytes ocupa como UTF-16. Es útil para dimensionar columnas de bases de datos, comprobar límites de API y de longitud de mensajes, y entender por qué una cadena de apariencia corta puede ser sorprendentemente grande.
Caracteres frente a bytes
Un carácter es una unidad de escritura: una letra, un dígito, un ideograma, un emoji. Unicode asigna a cada uno un número llamado punto de código, escrito como U+00E9. Un byte es una unidad de almacenamiento, ocho bits. Una codificación es la regla que convierte puntos de código en bytes, y codificaciones distintas producen recuentos de bytes distintos para el mismo texto.
En español sencillo la diferencia pasa desapercibida, porque en las codificaciones habituales cada carácter ASCII resulta ser un número exacto de bytes. La brecha aparece en cuanto el texto contiene tildes, eñes, escrituras no latinas o emojis.
Cómo mide UTF-8 un carácter
UTF-8 es una codificación de ancho variable: un carácter ocupa de uno a cuatro bytes según su punto de código.
U+0000–U+007F(ASCII: letras latinas sin tilde, dígitos, puntuación común): 1 byteU+0080–U+07FF(tildes y eñes latinas, griego, cirílico, hebreo, árabe): 2 bytesU+0800–U+FFFF(la mayoría de escrituras CJK y otras): 3 bytesU+10000en adelante (emojis y caracteres raros): 4 bytes
Como los caracteres ASCII siguen siendo un byte, UTF-8 es compatible con ASCII, lo que explica en buena parte por qué se convirtió en la codificación predeterminada de la web y de los archivos de texto.
Cómo mide UTF-16 un carácter
UTF-16 almacena la mayoría de los caracteres en una única unidad de código de 16 bits, es decir, dos bytes. Los caracteres por encima de U+FFFF —emojis y otros símbolos poco frecuentes— se guardan como un par sustituto de dos unidades de código, por lo que ocupan cuatro bytes. No existe el caso de un solo byte: incluso una letra ASCII corriente cuesta dos bytes en UTF-16. Este es el formato de cadenas en memoria de lenguajes como Java, C# y JavaScript.
Ejemplo resuelto
Tomemos el texto Héllo.
Hay 5 caracteres pero 6 bytes UTF-8, porque é cae en el rango de dos bytes. En UTF-16 cada uno de los 5 caracteres es una unidad de código de dos bytes, lo que da 10 bytes.
Tomemos ahora un solo emoji, 😀 (U+1F600). Es un carácter, pero está por encima de U+FFFF. UTF-8 lo codifica con cuatro bytes y UTF-16 lo almacena como un par sustituto, también cuatro bytes, aunque el recuento de caracteres es solo 1.
Por qué importa el tamaño en bytes
Los límites en los sistemas reales suelen contarse en bytes, no en caracteres. Una columna VARCHAR(255) puede limitar bytes o caracteres según la base de datos y su juego de caracteres; las restricciones de longitud de mensajes, los campos de carga útil de las API, los tamaños de cabeceras HTTP y los validadores de formularios se expresan con frecuencia en bytes. Medir de antemano el tamaño en bytes UTF-8 indica si un valor cabrá y cuánto espacio o ancho de banda consumirá, algo que el recuento de caracteres por sí solo no puede revelar.
Calculadoras relacionadas
Para ver los valores de bytes reales de una cadena como códigos binarios, hexadecimales y decimales, usa el Convertir texto a binario / hexadecimal / ASCII. Para medir el tamaño del texto una vez envuelto en Base64 para su transporte, consulta el Calculadora de Coste de Codificación Base64. Y para estimar cuánta información transporta una cadena en lugar de cuánto espacio ocupa, el Calculadora de entropía de Shannon calcula su entropía.
Preguntas frecuentes (FAQ)
¿Por qué el tamaño en bytes es mayor que el número de caracteres?
Un carácter es lo que se ve; un byte es cómo se almacena. En UTF-8, solo los caracteres ASCII básicos (letras latinas sin acento, dígitos y puntuación habitual) caben en un único byte. Las letras acentuadas como la é usan dos bytes, la mayoría de las demás escrituras tres y los emojis cuatro. Por eso, cualquier texto con caracteres no ASCII ocupa más bytes que caracteres tiene.
En UTF-16 la diferencia es aún mayor con texto ASCII, porque allí cada carácter usa al menos dos bytes.
¿Cuál es la diferencia entre UTF-8 y UTF-16?
Ambos son formas de convertir caracteres Unicode en bytes. UTF-8 usa un ancho variable de uno a cuatro bytes por carácter y es compatible con ASCII, lo que lo convierte en la codificación dominante en la web y en los archivos. UTF-16 usa dos bytes para la mayoría de los caracteres y cuatro para los poco frecuentes más allá del Plano Multilingüe Básico (como los emojis); es la representación en memoria habitual de lenguajes como Java, C# y JavaScript.
Para texto mayormente latino, UTF-8 es más compacto; en textos dominados por escrituras del este de Asia, ambos suelen ser comparables.
¿Cuántos bytes ocupa un carácter?
En UTF-8 depende del punto de código: U+0000–U+007F (ASCII) un byte, U+0080–U+07FF (acentos latinos, griego, cirílico, hebreo, árabe) dos bytes, U+0800–U+FFFF (la mayoría de escrituras CJK y otras) tres bytes, y U+10000 en adelante (emojis, caracteres raros) cuatro bytes.
En UTF-16, los mismos caracteres ocupan dos bytes hasta U+FFFF y cuatro por encima, donde se almacenan como un par sustituto (surrogate pair).
¿Cuándo importa el tamaño en bytes?
El almacenamiento y la transmisión se miden en bytes, no en caracteres. Una columna de base de datos declarada como VARCHAR(255) puede limitar bytes o caracteres según el motor y el juego de caracteres; los campos de las API, los límites de longitud de mensajes y las validaciones de formularios suelen expresarse en bytes. Conocer el tamaño en bytes UTF-8 ayuda a prever si un valor cabrá y cuánto espacio o ancho de banda consumirá.
Recomendaciones
Convertir texto a binario / hexadecimal / ASCII
Introduzca cualquier texto para verlo en binario, hexadecimal y códigos decimales de carácter. El binario y el hexadecimal siguen la secuencia de bytes UTF-8, mientras que el decimal indica el punto de código Unicode de cada carácter, que coincide con el valor ASCII en el texto inglés sencillo.