UCS-2 es la codificación de 16 bits que el SMS usa para todo texto que contenga caracteres fuera del alfabeto GSM-7 —escrituras no latinas, emojis, comillas tipográficas—. Cada carácter ocupa dos octetos, así que un SMS UCS-2 individual admite 70 caracteres y los segmentos concatenados 67 cada uno. Un único carácter fuera de GSM-7 fuerza todo el mensaje a UCS-2.
Por qué el SMS necesita UCS-2
GSM-7 solo cubre 128 caracteres más un pequeño conjunto de extensión. Cualquier otra cosa —árabe, chino, cirílico, hebreo, tailandés, emojis e incluso caracteres tipográficos como comillas curvas o rayas— no es representable. Para eso, el SMS cambia a UCS-2, una codificación de ancho fijo de 16 bits (en la práctica UTF-16 big-endian para el Plano Multilingüe Básico). Se señaliza con data_coding 0x08.
Capacidad: 70 y 67
El campo de datos de usuario del SMS es de 140 octetos. A dos octetos por carácter, UCS-2 cabe en 70 caracteres en un mensaje individual. Cuando un mensaje se concatena, el User Data Header de 6 bytes consume carga y deja 134 octetos: 67 caracteres por segmento. Es menos de la mitad de la capacidad de GSM-7, y por eso la elección de codificación tiene un gran impacto en el coste.
| Codificación | SMS único | Por segmento concatenado |
|---|---|---|
| GSM-7 (7-bit) | 160 caracteres | 153 caracteres |
| Binario de 8 bits | 140 bytes | 134 bytes |
| UCS-2 (16-bit) | 70 caracteres | 67 caracteres |
Qué activa UCS-2
La codificación es todo o nada por mensaje: un único carácter fuera de GSM-7 fuerza todo el mensaje a UCS-2, reduciendo la capacidad de 160 a 70. Los culpables habituales son fáciles de introducir por accidente: un apóstrofo tipográfico de un procesador de textos, una raya, un emoji o un nombre no latino. Detectarlos antes de enviar es la mayor palanca sobre el coste del SMS.
| Categoría | Ejemplos |
|---|---|
| Emoji | 😀 ✅ 🚀 ❤️ |
| Puntuación tipográfica | ' ' “ ” – — … |
| Escrituras no latinas | العربية · 中文 · Кириллица · עברית · ไทย |
| Las letras acentuadas no están en GSM-7 | â ê î ô û ã õ ą ę ř |
La advertencia sobre los pares suplentes
UCS-2 es estrictamente de 16 bits y cubre el Plano Multilingüe Básico de Unicode. Los caracteres por encima de U+FFFF —muchos emojis modernos, por ejemplo— se representan en UTF-16 como pares suplentes de dos unidades de código de 16 bits, así que uno solo de esos emojis consume cuatro octetos (dos «caracteres» UCS-2). Un mensaje que parece un solo emoji puede, por tanto, contar como dos para el límite de 70/67.
Preguntas frecuentes
¿Cuántos caracteres caben en un SMS Unicode?
70 caracteres en un mensaje UCS-2 individual, y 67 por segmento cuando el mensaje se concatena. Se debe a que cada carácter son 16 bits (dos octetos) frente al límite de carga de 140 octetos del SMS.
¿Qué hace que un SMS cambie a UCS-2?
Cualquier carácter fuera del alfabeto GSM-7 —un emoji, una comilla tipográfica, una raya o texto no latino— fuerza todo el mensaje a UCS-2. La codificación se elige por mensaje, no por carácter.
¿Es UCS-2 lo mismo que UTF-16?
Casi. UCS-2 es de 16 bits fijos y cubre el Plano Multilingüe Básico. El SMS trata la carga como UTF-16 big-endian, así que los caracteres por encima de U+FFFF (muchos emojis) se convierten en pares suplentes y ocupan cuatro octetos.
¿Por qué un emoji a veces cuenta como dos caracteres?
Los emojis por encima de U+FFFF se codifican como pares suplentes UTF-16 —dos unidades de código de 16 bits—, así que un solo glifo consume dos de las 70 (o 67) posiciones de carácter UCS-2 disponibles.
¿Cómo evito enviar UCS-2 por accidente?
Sanea la entrada antes de enviar: sustituye comillas y rayas tipográficas por sus equivalentes ASCII, elimina o translitera acentos sueltos y comprueba si hay emojis. Un verificador GSM-7/Unicode marca los caracteres exactos que fuerzan UCS-2.
Especificaciones de la fuente
Las normas publicadas en las que se basa esta página. Se abre en una pestaña nueva.