Cómo se calcula la longitud de un SMS
Un SMS transporta 140 octetos (1.120 bits) de datos de usuario. Con el alfabeto GSM de 7 bits por defecto, cada carácter ocupa 7 bits, así que 140 octetos contienen 160 caracteres. En UCS-2 (la codificación Unicode de 16 bits que se usa en SMS) cada carácter ocupa 2 octetos, de modo que el mismo espacio contiene 70 caracteres.
Cuando un mensaje supera un SMS, se envía como SMS concatenado. Cada parte empieza con una cabecera UDH (User Data Header) de 6 octetos con un número de referencia, el total de partes y la posición de la parte, para que el teléfono pueda unirlas. Quedan 134 octetos por parte: 153 caracteres GSM-7 o 67 caracteres UCS-2.
El destinatario ve un solo mensaje, pero operadores y proveedores facturan cada parte. Un mensaje GSM-7 de 161 caracteres cuesta dos SMS, igual que un mensaje en árabe de 71 caracteres.
- GSM-7: 160 caracteres en un SMS, 153 por parte si se concatena (306 en 2 partes, 459 en 3).
- UCS-2: 70 caracteres en un SMS, 67 por parte si se concatena (134 en 2 partes, 201 en 3).
- Un solo carácter fuera de GSM-7, en cualquier lugar del texto, cambia todo el mensaje a UCS-2.
El alfabeto GSM-7 y su tabla de extensión
El alfabeto GSM de 7 bits por defecto está definido en la norma 3GPP TS 23.038 (antes GSM 03.38). Su tabla básica tiene 128 posiciones: letras latinas y dígitos, puntuación común y caracteres como @ £ $ ¥ è é ù ì ò Ç Ø ø Å å Ä Ö Ñ Ü ä ö ñ ü à ß Æ æ É ¿ ¡ § y las mayúsculas griegas Δ Φ Γ Λ Ω Π Ψ Σ Θ Ξ. El salto de línea y el retorno de carro también cuentan como un carácter.
Otros diez caracteres están en la tabla de extensión y se alcanzan con un código de escape, así que cada uno cuesta dos septetos: el euro €, el acento circunflejo ^, las llaves { }, los corchetes [ ], la virgulilla ~, la barra vertical |, la barra invertida \ y el salto de página. Un mensaje con 158 letras y un € ocupa exactamente 160 septetos; con una letra más pasa a dos segmentos.
Una secuencia de escape debe quedar en una sola parte, así que un carácter de dos septetos que cruzaría el límite de 153 septetos pasa a la parte siguiente. Este contador aplica esa regla, por eso una parte puede terminar en 152.
La TS 23.038 también define tablas de idioma nacional (national language shift tables; por ejemplo, turca, española, portuguesa y varias escrituras de la India) que mantienen algunos mensajes en 7 bits. Su soporte depende de la red y del teléfono, por lo que la mayoría de las plataformas, y este contador, usan solo el alfabeto por defecto.
Caracteres que pasan su SMS a Unicode sin avisar
La mayoría de los mensajes que se quedan en 70 caracteres por sorpresa vienen de texto copiado de un procesador de textos, un CMS o un teclado móvil que inserta caracteres tipográficos automáticamente. Se parecen mucho a sus equivalentes GSM-7, pero son otros puntos de código.
Las vocales con tilde aguda á í ó ú (salvo é) y otras letras como â ê ã õ y la ç minúscula también fuerzan UCS-2. En español esto es muy frecuente: quite las tildes solo si su público lo acepta, porque la ortografía correcta suele valer más que un segmento extra.
- Comillas y apóstrofos tipográficos ‘ ’ “ ” « » (use ' y ").
- Guiones medio y largo – — (use -) y puntos suspensivos … (use ...).
- Espacios de no separación y finos, a menudo invisibles tras copiar y pegar (use un espacio normal).
- Caracteres de ancho cero y marcas de orden de bytes ocultos en plantillas (elimínelos).
- Emoji: la mayoría ocupa 2 unidades UCS-2, una bandera o un emoji con tono de piel 4, y una secuencia de familia 8 o más.
Convertir un mensaje a GSM-7 con un clic
Cuando un mensaje está en Unicode, el botón Convertir a GSM-7 lo reescribe con caracteres GSM-7 solo donde es seguro: las comillas y guiones tipográficos pasan a simples, se eliminan los espacios invisibles, se quitan los acentos que GSM-7 no tiene (á → a, í → i, ó → o) y las ligaduras y símbolos se escriben con letras (œ → oe, ™ → TM). Los caracteres que ya son GSM-7, como é, ñ, ü, ¿, ¡ y €, se conservan.
La herramienta muestra cada cambio y el número de segmentos antes y después, y Deshacer recupera su texto original. El árabe no se puede convertir: un mensaje en árabe siempre queda en Unicode con 70 caracteres por SMS, así que acórtelo o envíelo por WhatsApp. Los emoji y otros alfabetos no latinos también se dejan como están.
SMS en árabe: 70 caracteres, 67 por parte
Las letras árabes no forman parte de GSM-7, así que todo SMS en árabe se envía en UCS-2: 70 caracteres en un mensaje simple y 67 por parte si es más largo. Un mensaje árabe de 140 caracteres son tres segmentos facturados, no dos, porque 140 supera 2 × 67 = 134.
Cuenta cada punto de código: espacios, letras latinas mezcladas, dígitos arábigo-índicos y signos diacríticos (tashkil). Una palabra totalmente vocalizada puede usar el doble de unidades que la misma palabra sin harakat, así que omita los diacríticos en mensajes transaccionales salvo que eviten una ambigüedad.
Para OTP y alertas en el Golfo, mantenga el texto árabe por debajo de 70 caracteres siempre que pueda, ponga el código al principio y evite los emoji. Si envía la misma alerta en inglés, la versión inglesa puede ser más del doble de larga por el mismo precio.
De los segmentos al coste
Su factura mensual de SMS depende de los segmentos, no de los mensajes: segmentos por mensaje × mensajes al mes × tarifa de la red de destino. Reducir una campaña de 2 segmentos a 1 reduce a la mitad el coste de cada envío.
Revise el texto final con las variables completadas. Un nombre de cliente, un número de pedido o un enlace acortado pueden superar un límite, y un nombre en árabe o con tildes puede pasar una plantilla GSM-7 a UCS-2 solo para algunos destinatarios.
- Pruebe los valores realistas más largos de cada variable.
- Acorte los enlaces y elimine espacios y saltos de línea al final.
- Prefiera una sola llamada a la acción clara a un mensaje largo de varias partes.
