Qué es la Codificación GSM-7? Límites de Caracteres SMS Explicados
GSM-7 es un estándar de codificación de caracteres usado en SMS (Servicio de Mensajes Cortos) que permite hasta 160 caracteres por segmento de mensaje. Desarrollado por el Instituto Europeo de Normas de Telecomúnicaciónes (ETSI), GSM-7 es la codificación predeterminada para mensajes de texto y juega un papel crucial en determinar los costos y la entrega de SMS.Entendiendo la Codificación GSM-7
GSM-7 usa 7 bits para representar cada caracter, de ahi viene el nombre. Esta codificación de 7 bits es más eficiente que los estándares ASCII de 8 bits o UTF-8 usados en computación, permitiendo que más caracteres quepan dentro del ancho de banda limitado de SMS.
Las Matematicas Detras de los 160 Caracteres
Un mensaje SMS tiene una carga máxima de 1120 bits. Con codificación GSM-7:
text1120 bits ÷ 7 bits por caracter = 160 caracteres
Esta es la razon por la que la longitud estándar de SMS es 160 caracteres cuando se usa texto compatible con GSM-7.
El Conjunto de Caracteres GSM-7
El conjunto básico de caracteres GSM-7 incluye 128 caracteres optimizados para idiomas de Europa Occidental:
Caracteres Estándar (7 bits cada uno)
| Categoría | Caracteres |
|---|
| Letras mayusculas | A-Z |
|---|---|
| Letras minusculas | a-z |
| Números | 0-9 |
| Puntuación común | . , : ; ! ? |
| Caracteres especiales | @ £ $ ¥ # % & |
| Simbolos | ( ) < > = + - / |
| Espacios | Espacio, salto de línea |
Caracteres Extendidos (14 bits cada uno)
Algunos caracteres requieren una secuencia de escape, usando efectivamente 2 espacios de caracter:
| Caracter | Descripción | Cuenta como |
|---|
{ | Llave izquierda | 2 caracteres | |
|---|---|---|---|
} | Llave derecha | 2 caracteres | |
[ | Corchete izquierdo | 2 caracteres | |
] | Corchete derecho | 2 caracteres | |
~ | Tilde | 2 caracteres | |
\ | Barra invertida | 2 caracteres | |
^ | Acento circunflejo | 2 caracteres | |
€ | Signo de euro | 2 caracteres | |
| Barra vertical | 2 caracteres |
GSM-7 vs Codificación UCS-2
Cuando un mensaje contiene caracteres fuera del conjunto GSM-7, la codificación cambia automáticamente a UCS-2 (Únicode):
| Codificación | Bits por caracter | Caracteres por SMS |
|---|
| GSM-7 | 7 bits | 160 caracteres |
|---|---|---|
| UCS-2 | 16 bits | 70 caracteres |
Caracteres Que Activan UCS-2
Caracteres comúnes que fuerzan codificación UCS-2:
- Emojis - Todos los emojis requieren Únicode
- Chino, Japones, Coreano - Caracteres CJK
- Arabe, Hebreo - Escrituras de derecha a izquierda
- Cirilico - Ruso, Ucraniano, etc.
- Comillas tipograficas - " " ' ' (comillas curvas)
- Simbolos especiales - TM © ® y muchos otros
El Impacto en Costos
Cambiar a UCS-2 puede más que duplicar tus costos de SMS:
Ejemplo: Un mensaje de 140 caracteres con un emoji- Sin emoji (GSM-7): 1 segmento SMS
- Con emoji (UCS-2): 2 segmentos SMS (140 chars ÷ 70 = 2)
Mensajes Concatenados (SMS Largos)
Cuando los mensajes exceden el límite de un solo segmento, se dividen en múltiples partes:
Concatenación GSM-7
| Segmentos | Caracteres por segmento | Total caracteres |
|---|
| 1 | 160 | 160 |
|---|---|---|
| 2 | 153 | 306 |
| 3 | 153 | 459 |
| 4 | 153 | 612 |
Concatenación UCS-2
| Segmentos | Caracteres por segmento | Total caracteres |
|---|
| 1 | 70 | 70 |
|---|---|---|
| 2 | 67 | 134 |
| 3 | 67 | 201 |
| 4 | 67 | 268 |
Errores Comúnes con GSM-7
1. Sustitucion Invisible de Caracteres
Los procesadores de texto y algunas aplicaciónes reemplazan caracteres automáticamente:
| Escrito | Auto-reemplazado | Impacto en Codificación |
|---|
" | " o " | GSM-7 → UCS-2 |
|---|---|---|
' | ' o ' | GSM-7 → UCS-2 |
- | – (guion medio) | GSM-7 → UCS-2 |
... | … (elipsis) | GSM-7 → UCS-2 |
2. Copiar-Pegar desde Documentos
Copiar texto de Microsoft Word, Google Docs o clientes de email frecuentemente introduce:
- Comillas tipograficas y apostrofes
- Espacios de no separacion
- Caracteres de formato ocultos
- Guiones largos/medios
3. Insercion de Emojis
Un solo emoji puede convertir todo tu mensaje a UCS-2, reduciendo la capacidad de 160 a 70 caracteres.
4. Caracteres Especificos de Idioma
Caracteres comúnes en ciertos idiomas pero fuera de GSM-7:
| Idioma | Caracteres Problematicos |
|---|
| Polaco | ą ć ę ł ń ó ś ź ż |
|---|---|
| Turco | ğ ı İ ş |
| Portugues | ã õ |
| Aleman | ß (a veces) |
Extensiónes de Idioma Nacional GSM-7
El 3GPP definio extensiónes de idioma nacional para soportar caracteres adicionales mientras mantiene eficiencia de 7 bits:
- Turco - Agrega ğ, ı, İ, ş, Ş, ç, Ç
- Español - Agrega á, é, í, ó, ú, ü, ñ, Ñ, ¿, ¡
- Portugues - Agrega ã, Ã, õ, Õ, â, ê, ô, etc.
Mejores Prácticas para Codificación de Caracteres SMS
1. Validar Antes de Enviar
Siempre verificar la codificación del mensaje antes de transmitir:
javascriptfunction isGsm7Compatible(text) { const gsm7Chars = /^[A-Za-z0-9 \r\n@£$¥èéùìòÇØøÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ!"#¤%&'()+,\-./:;<=>?¡ÄÖÑܧ¿äöñüà^{}\\\[~\]|€]*$/; return gsm7Chars.test(text); }
2. Contar Caracteres Correctamente
Considerar caracteres extendidos:
javascriptfunction countGsm7Characters(text) { const extendedChars = /[€\[\]{}~\\^[]).length; return text.length + extended; }
]/g; const extended = (text.match(extendedChars)
3. Sanear Entrada de Usuario
Reemplazar caracteres problematicos antes de enviar:
javascriptfunction sanitizeForGsm7(text) { return text .replace(/[""]/g, '"') // Comillas tipograficas a rectas .replace(/['']/g, "'") // Apostrofes tipográficos .replace(/–/g, "-") // Guion medio a guion .replace(/—/g, "-") // Guion largo a guion .replace(/…/g, "..."); // Elipsis a puntos }
4. Advertir a Usuarios sobre Cambios de Codificación
Si tu aplicación acepta entrada de usuario para SMS, mostrar retroalimentación en tiempo real:
- Conteo actual de caracteres
- Número de segmentos SMS
- Tipo de codificación (GSM-7 o UCS-2)
- Caracteres causando cambio de codificación
5. Considerar Transliteracion
Para mensajes internacionales, considerar transliterar caracteres no-GSM-7:
| Original | Transliterado |
|---|
| café | cafe |
|---|---|
| naïve | naive |
| ñ | n |
| ü | u |
Codificación SMS y APIs de Mensajería
Las APIs modernas de mensajería manejan la codificación automáticamente, pero entenderla ayuda a optimizar:
Ejemplo de API Zavu
Al enviar via API, la plataforma:
json{ "message": { "id": "msg_abc123", "encoding": "GSM-7", "segments": 1, "characterCount": 142 } }
El Futuro de la Codificación SMS
Mientras GSM-7 sigue siendo el estándar, la industria esta evoluciónando:
RCS (Rich Commúnication Services)
RCS (Rich Commúnication Services) elimina las limitaciones de caracteres completamente, soportando:- Longitud de texto ilimitada
- Soporte Únicode completo
- Medios enriquecidos (imágenes, videos)
- Confirmaciónes de lectura e indicadores de escritura
Estrategias de Fallback
Las plataformas de mensajería inteligente usan:
Probando Compatibilidad GSM-7
Antes de lanzar campañas SMS, probar con:
Herramientas Online
- Validadores de caracteres GSM-7
- Calculadoras de longitud SMS
- Herramientas de detección de codificación
Pruebas en Dispositivos
Enviar mensajes de prueba a dispositivos reales a través de:
- Diferentes operadores
- Varios modelos de teléfono
- Múltiples países
Conclusion
Entender la codificación GSM-7 es esencial para cualquiera que trabaje con mensajería SMS. El límite de 160 caracteres, los costos de caracteres extendidos, y el fallback a UCS-2 impactan directamente la entrega y costos de mensajes.
Puntos clave:
- GSM-7 permite 160 caracteres por SMS individual
- Caracteres extendidos cuentan doble (€, [, ], etc.)
- Caracteres no-GSM-7 activan UCS-2, reduciendo capacidad a 70 caracteres
- Mensajes concatenados pierden caracteres por headers
- Siempre sanear texto antes de enviar para evitar cambios inesperados de codificación
Lecturas Adicionales
- Concatenación SMS y mensajes multiparte
- Únicode en telecomúnicaciónes
- Estándares de mensajería RCS
- Optimización de entrega SMS