GSM-7 es el alfabeto por defecto de 7 bits definido en GSM 03.38 (3GPP TS 23.038) para SMS. Codifica 128 caracteres —letras latinas, dígitos, puntuación y algunos caracteres acentuados y griegos— en 7 bits cada uno. Diez caracteres extra viven en una tabla de extensión y cada uno cuesta dos septetos. El texto cabe en 160 caracteres por SMS individual.
La tabla básica (128 caracteres)
El alfabeto por defecto GSM-7 empaqueta 128 caracteres en 7 bits cada uno. Cubre el alfabeto latino en mayúsculas, los dígitos, la puntuación común, un conjunto de vocales latinas acentuadas, los signos de sección y de moneda, y varias letras griegas en mayúscula usadas como símbolos. Cada carácter aquí cuesta exactamente un septeto (7 bits).
| Grupo | Caracteres |
|---|---|
| Mayúsculas latinas | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
| Minúsculas latinas | a b c d e f g h i j k l m n o p q r s t u v w x y z |
| Dígitos | 0 1 2 3 4 5 6 7 8 9 |
| Puntuación | ! " # % & ' ( ) * + , - . / : ; < = > ? _ |
| Latín con acentos | à ä å æ è é ì ñ ò ö ø ù ü Ä Å Æ Ç É Ñ Ö Ø Ü ß |
| Símbolos griegos | Δ Φ Γ Λ Ω Π Ψ Σ Θ Ξ |
| Moneda / símbolos | £ $ ¥ ¤ € (ext) § ¡ ¿ @ |
| Espacios en blanco | SP (espacio), CR, LF |
La tabla de extensión
Diez caracteres no están en la tabla básica. Se alcanzan con un prefijo de escape (0x1B) seguido del código del carácter en la tabla de extensión, lo que significa que cada uno cuesta dos septetos, no uno. Incluir cualquiera de ellos en un mensaje reduce la capacidad efectiva de un SMS individual. Ten en cuenta que el signo del euro (€) es uno de ellos.
| Carácter | Nombre |
|---|---|
| | | Barra vertical |
| ^ | Caret / acento circunflejo |
| € | Símbolo del euro |
| { | Llave izquierda |
| } | Llave derecha |
| [ | Corchete izquierdo |
| ] | Corchete derecho |
| ~ | Tilde |
| \ | Barra invertida |
| FF | Salto de página |
Empaquetado de 7 bits
Como cada carácter son 7 bits pero los octetos son de 8 bits, GSM-7 empaqueta los septetos cruzando las fronteras de byte. Ocho caracteres de 7 bits se empaquetan en siete octetos de 8 bits, así que 160 septetos llenan 140 octetos, el límite de datos de usuario del SMS. El empaquetado desplaza los bits de cada carácter sucesivo para rellenar los huecos, y por eso una vista ingenua de un byte por carácter de un SMS GSM-7 parece desordenada.
8 characters (56 bits) ────► 7 octets (56 bits)
160 GSM-7 septets ────► 140 octets (the SMS payload limit)
(an extension char = 2 septets)Tablas de desplazamiento de idioma
3GPP TS 23.038 también define tablas de desplazamiento de idioma nacionales (por ejemplo, turco, español, portugués) que remapean algunas posiciones de la tabla de extensión a letras específicas del idioma. La compatibilidad es irregular entre terminales y redes, así que muchos remitentes evitan depender de ellas y recurren a UCS-2 cuando un mensaje necesita caracteres fuera del conjunto básico GSM-7.
Preguntas frecuentes
¿Cuántos caracteres caben en un SMS GSM-7?
160 caracteres en un SMS individual, porque 160 septetos de 7 bits cada uno llenan el límite de 140 octetos de datos de usuario. Los mensajes GSM-7 concatenados bajan a 153 caracteres por segmento para dejar sitio al User Data Header.
¿Qué caracteres cuentan como dos en GSM-7?
Los diez caracteres de la tabla de extensión —| ^ € { } [ ] ~ \ y salto de página— cuestan cada uno dos septetos porque necesitan un prefijo de escape. Usar cualquiera de ellos reduce cuánto texto cabe en un SMS individual.
¿Está el signo del euro en GSM-7?
Sí, pero en la tabla de extensión, así que cuesta dos septetos en lugar de uno. Por tanto, un mensaje que contiene € cabe en menos caracteres antes de necesitar un segundo segmento.
¿Por qué un mensaje GSM-7 parece desordenado a nivel de byte?
Porque GSM-7 empaqueta caracteres de 7 bits cruzando las fronteras de octeto de 8 bits. Ocho caracteres ocupan siete octetos, así que leer la carga a un byte por carácter da un sinsentido: primero hay que desempaquetar los septetos.
¿Qué ocurre si mi texto tiene un carácter que no está en GSM-7?
Todo el mensaje debe cambiar a la codificación UCS-2 (16 bits), lo que reduce la capacidad de un SMS individual de 160 a 70 caracteres. Un único carácter fuera de GSM-7 (un emoji, una comilla tipográfica o muchas letras no latinas) fuerza este cambio.
Especificaciones de la fuente
Las normas publicadas en las que se basa esta página. Se abre en una pestaña nueva.