Guías 02

Cómo se calculan los bytes: UTF-8, EUC-KR y CP949

Por qué el coreano ocupa a veces 2 bytes y a veces 3. Cómo calcular los bytes en cada codificación y qué tener en cuenta con SMS y bases de datos.

Caracteres y bytes no son lo mismo

El número de caracteres es la cantidad de letras que ve una persona; los bytes son el espacio que ocupa ese texto al guardarse en un ordenador. Un mismo carácter puede ocupar un número distinto de bytes según la codificación de caracteres (la regla que convierte letras en números). Las letras latinas y los dígitos ocupan 1 byte en casi todas las codificaciones, pero el coreano puede ocupar 2 o 3 bytes según la codificación.

UTF-8: el estándar actual

UTF-8 es la codificación que usan las páginas web y la mayor parte del software moderno. Emplea de 1 a 4 bytes según el tamaño del número Unicode (punto de código) (RFC 3629).

Rango de puntos de códigoBytesEjemplos
U+0000 ~ U+007F1Letras latinas básicas, dígitos, símbolos básicos
U+0080 ~ U+07FF2é, ñ, alfabetos griego, cirílico y árabe
U+0800 ~ U+FFFF3Hangul, kanji, kana
U+10000 ~ U+10FFFF4La mayoría de los emojis, escrituras antiguas

Todas las sílabas hangul precompuestas (가~힣, U+AC00~U+D7A3) están en el tercer rango, así que en UTF-8 cada sílaba ocupa 3 bytes. Por ejemplo, ‘안녕하세요’ (hola) son 5 caracteres y 15 bytes.

UTF-16

UTF-16, que se usa internamente en JavaScript, Java y Windows, guarda la mayoría de los caracteres en 2 bytes y los que están en U+10000 o más, como los emojis, en 4 bytes (par sustituto). Por eso la longitud de cadena de JavaScript cuenta un emoji como 2.

EUC-KR: la codificación coreana de sílabas precompuestas

EUC-KR es una codificación basada en la norma industrial coreana KS X 1001. Las letras latinas y los dígitos ocupan 1 byte, y los caracteres incluidos en KS X 1001, 2 bytes. KS X 1001 contiene 2.350 sílabas hangul de uso frecuente, 4.888 hanja (caracteres chinos), kana, letras griegas y cirílicas y diversos símbolos.

El problema es que de las 11.172 sílabas del hangul moderno solo incluye 2.350. Sílabas que no están en la lista, como ‘똠’, ‘햏’ o ‘뷁’, no se pueden representar con los dos bytes del EUC-KR básico. Existe un método de composición de 8 bytes definido en un anexo de la norma, pero pocos programas lo admiten, así que normalmente se convierten en ‘?’ o producen un error.

CP949: la versión ampliada

CP949 (el ‘código hangul unificado’ de Microsoft) amplía EUC-KR para representar las 11.172 sílabas del hangul moderno en 2 bytes. Como fue la página de códigos coreana predeterminada de Windows, está muy extendida en documentos y sistemas coreanos antiguos. La costumbre de decir ‘1 byte para el alfabeto latino, 2 bytes para el coreano’ procede en su mayor parte de esta codificación.

Cuándo importan los bytes

Cómo calcula esta herramienta

Los bytes UTF-8 se calculan con exactitud a partir del punto de código de cada carácter. Para EUC-KR y CP949 se comprueba, con la tabla de caracteres real de cada codificación, si cada carácter puede representarse en 2 bytes. Los caracteres no representables (emojis, sílabas coreanas fuera de la lista, etc.) suelen sustituirse por un ‘?’ de un byte, así que se cuentan como 1 byte y se indica aparte cuántos hay. En el modo solicitud, si eliges el criterio ‘Bytes (coreano = 2)’, se cuenta según CP949.

Fecha de referencia: 2026-09-23

Abrir el contador de caracteres →