Contador de bytes por codificación
Mide cuántos bytes ocupa tu texto en UTF-8, Shift_JIS, EUC-JP, UTF-16 y JIS (ISO-2022-JP). Útil para verificar los límites de columnas de base de datos y los límites de formularios antiguos.
Consejos
- En UTF-8, los caracteres alfanuméricos de ancho medio ocupan 1 byte cada uno, mientras que los caracteres japoneses (hiragana, katakana, kanji) suelen ocupar 3 bytes cada uno, por lo que el mismo número de caracteres puede significar cantidades de bytes muy distintas entre un texto en inglés y uno en japonés.
- Los sistemas antiguos que aplican límites basados en bytes a columnas como VARCHAR(255) alcanzan su límite mucho antes con texto japonés que con un texto en inglés de la misma longitud en caracteres.
- La mayoría de los emojis se representan mediante un par sustituto de dos unidades de código, ocupando 4 bytes tanto en UTF-8 como en UTF-16, lo que explica por qué los contadores de caracteres de las redes sociales a veces alcanzan su límite antes de lo esperado.
- Si ya conoces una cantidad de bytes y quieres convertirla a KB, MB u otras unidades, usa nuestra herramienta hermana "Conversor de unidades de bytes": esta herramienta se encarga del cálculo inverso, de texto a cantidad de bytes.
Preguntas frecuentes
A propósito — La relación oculta entre los límites de caracteres en redes sociales y el número de bytes
Las versiones antiguas del juego de caracteres "utf8" de MySQL tenían una limitación sorprendente: en realidad no podían almacenar emojis de Unicode (caracteres suplementarios a partir de U+10000). UTF-8 en sí es una codificación de longitud variable que admite hasta 4 bytes por carácter, pero el "utf8" de MySQL estaba históricamente limitado a 3 bytes por carácter, lo que provocaba errores al insertar texto con emojis. Migrar a "utf8mb4", que sí admite correctamente el rango completo de 4 bytes, es ahora la solución recomendada: un ejemplo muy conocido de por qué comprender la relación entre la codificación de caracteres y el número de bytes importa en la práctica.
Cuando Twitter (ahora X) aplicaba su famoso límite de 140 caracteres, hubo un largo debate sobre la equidad entre idiomas: los usuarios japoneses podían expresar una idea bastante completa en 140 caracteres, mientras que los usuarios de inglés apenas podían escribir 20 o 30 palabras en el mismo límite. Esto se debe a que un solo carácter kanji japonés puede transmitir mucha más información que una sola letra en inglés. Twitter acabó introduciendo un sistema de conteo ponderado en el que idiomas como el japonés contaban como "1 carácter = 1 punto", mientras que otros contaban ciertos caracteres como "2 bytes = 1 punto", en un intento de equilibrar la balanza entre idiomas.
Los SMS en móviles tienen una peculiaridad similar. Un SMS codificado con el estándar GSM permite hasta 160 caracteres por mensaje, pero en cuanto incluye un solo carácter fuera del juego de caracteres GSM de 7 bits —como un emoji o un carácter japonés—, la codificación cambia a UCS-2 (aproximadamente equivalente a UTF-16) y el límite cae en picado a solo 70 caracteres. El hecho de que usar un solo carácter japonés pueda reducir a más de la mitad la longitud disponible del mensaje es un ejemplo perfecto y real de la relación entre codificación de caracteres y número de bytes que esta herramienta está pensada para medir.