Detectar la codificación consiste en comprobar si todos los caracteres están en el alfabeto GSM-7; si aunque sea uno no lo está, todo el mensaje pasa a UCS-2 y la capacidad baja de 160 a 70 caracteres. Como el SMS se factura por segmento, un solo emoji o comilla tipográfica perdidos pueden duplicar o triplicar el coste de un mensaje.
Cómo detectar GSM-7 frente a UCS-2
La regla es sencilla y absoluta: si todos los caracteres del mensaje están presentes en la tabla básica o de extensión de GSM-7, el mensaje puede enviarse como GSM-7; si algún carácter no lo está, todo el mensaje debe usar UCS-2. La detección es, por tanto, una prueba de pertenencia al conjunto respecto al alfabeto GSM-7, aplicada a toda la cadena, recordando que los diez caracteres de extensión cuentan como dos septetos cada uno.
for each character c in message:
if c not in GSM7_BASIC and c not in GSM7_EXTENSION:
encoding = UCS-2 # one stray char forces the whole message
break
else:
encoding = GSM-7Los caracteres que fuerzan UCS-2 en silencio
Los caracteres caros son los que los usuarios introducen sin darse cuenta. Los procesadores de texto y los teléfonos sustituyen automáticamente las comillas y guiones rectos por versiones tipográficas que no están en GSM-7. Los emojis nunca están en GSM-7. Los nombres no latinos y cualquier letra acentuada fuera del conjunto de acentos de GSM-7 hacen lo mismo. Sanear estos antes de enviar —sustituyendo la puntuación tipográfica por ASCII, transliterando cuando sea aceptable— mantiene los mensajes en GSM-7.
| Carácter desencadenante | Reemplazo seguro GSM-7 |
|---|---|
| ' ' (comillas simples tipográficas) | ' (apóstrofe recto) |
| “ ” (comillas dobles tipográficas) | " (comilla recta) |
| – — (semirraya/raya) | - (guion) |
| … (elipsis) | ... (tres puntos) |
| emoji | (eliminar o describir con palabras) |
| espacio de no separación | (espacio normal) |
Cómo la codificación determina el número de segmentos
El SMS se cobra por segmento, y la codificación fija cuántos segmentos necesita un mensaje. Los umbrales son fijos: GSM-7 da 160 en un segmento y luego 153 por parte; UCS-2 da 70 y luego 67. Así, un mensaje de 75 caracteres es un segmento en GSM-7 pero dos en UCS-2. Un SMS promocional de 160 caracteres con un emoji salta de un segmento a tres. La codificación es el mayor factor controlable del coste por mensaje.
| Segmentos | caracteres GSM-7 | Caracteres UCS-2 |
|---|---|---|
| 1 | 1 – 160 | 1 – 70 |
| 2 | 161 – 306 | 71 – 134 |
| 3 | 307 – 459 | 135 – 201 |
| n (n ≥ 2) | 153 × n | 67 × n |
Control práctico del coste
Tres hábitos mantienen predecible el coste del SMS. Primero, valida y sanea los caracteres de cada mensaje saliente, marcando cualquier cosa que fuerce UCS-2. Segundo, mantén las plantillas dentro de un solo segmento GSM-7 (≤160 caracteres) siempre que el mensaje lo permita. Tercero, mide el número real de segmentos por mensaje y por campaña, ya que eso —no el recuento de caracteres— es lo que se te factura. Una calculadora de segmentos hace visible el compromiso antes de enviar.
Preguntas frecuentes
¿Cómo sé si mi SMS es GSM-7 o UCS-2?
Comprueba cada carácter contra el alfabeto GSM-7. Si todos los caracteres están en la tabla básica o de extensión de GSM-7, es GSM-7; si algún carácter no lo está, todo el mensaje es UCS-2. Un verificador GSM-7/Unicode automatiza esto y resalta los caracteres problemáticos.
¿Cuánto me cuesta un emoji en un SMS?
Potencialmente mucho. Un emoji fuerza todo el mensaje a UCS-2, reduciendo la capacidad de 160 a 70 caracteres. Un mensaje de 160 caracteres con un solo emoji pasa de un segmento a tres, triplicando aproximadamente el coste.
¿Cómo se factura un SMS multisegmento?
Cada segmento se factura como un SMS aparte. Un mensaje que se divide en tres partes se cobra como tres mensajes. Por eso la codificación, que fija la capacidad por segmento, es la mayor palanca sobre el coste.
¿Cómo puedo mantener los mensajes en GSM-7?
Sanea la entrada antes de enviar: sustituye comillas y guiones tipográficos por equivalentes ASCII, elimina emojis y translitera acentos sueltos cuando sea aceptable. Mantén las plantillas dentro de 160 caracteres GSM-7 para que sigan siendo un segmento.
¿El coste lo determina el número de caracteres o de segmentos?
El número de segmentos. Dos mensajes con el mismo recuento de caracteres pueden costar cantidades distintas si uno usa UCS-2. Mide siempre los segmentos reales por mensaje, no la longitud bruta de caracteres.
Especificaciones de la fuente
Las normas publicadas en las que se basa esta página. Se abre en una pestaña nueva.