BroadNet
Codifica SMSSet di caratteri

Il set di caratteri GSM-7

Aggiornato il 3 min di letturaBasato su standard
Risposta diretta

GSM-7 è l'alfabeto predefinito a 7 bit definito in GSM 03.38 (3GPP TS 23.038) per gli SMS. Codifica 128 caratteri — lettere latine, cifre, punteggiatura e alcuni caratteri accentati e greci — in 7 bit ciascuno. Dieci caratteri aggiuntivi risiedono in una tabella di estensione e costano due settetti ciascuno. Il testo entra in 160 caratteri per singolo SMS.

§01

La tabella base (128 caratteri)

L'alfabeto predefinito GSM-7 comprime 128 caratteri in 7 bit ciascuno. Copre l'alfabeto latino maiuscolo, le cifre, la punteggiatura comune, un insieme di vocali latine accentate, i segni di sezione e di valuta e diverse lettere greche maiuscole usate come simboli. Ogni carattere qui costa esattamente un settetto (7 bit).

Alfabeto base GSM-7 (per gruppo)
GruppoCaratteri
Maiuscole latineA 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
Minuscole latinea 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
Cifre0 1 2 3 4 5 6 7 8 9
Punteggiatura! " # % & ' ( ) * + , - . / : ; < = > ? _
Latino accentatoà ä å æ è é ì ñ ò ö ø ù ü Ä Å Æ Ç É Ñ Ö Ø Ü ß
Simboli greciΔ Φ Γ Λ Ω Π Ψ Σ Θ Ξ
Valuta / simboli£ $ ¥ ¤ € (ext) § ¡ ¿ @
Spazio vuotoSP (spazio), CR, LF
§02

La tabella di estensione

Dieci caratteri non sono nella tabella base. Vi si accede con un prefisso di escape (0x1B) seguito dal codice del carattere nella tabella di estensione, il che significa che ciascuno costa due settetti anziché uno. Includere uno qualsiasi di essi in un messaggio riduce la capacità effettiva del singolo SMS. Notate che il simbolo dell'euro (€) è uno di questi.

Tabella di estensione GSM-7 — ciascuno costa 2 settetti
CarattereNome
|Pipe
^Caret / accento circonflesso
€Simbolo dell'euro
{Parentesi graffa sinistra
}Parentesi graffa destra
[Parentesi quadra sinistra
]Parentesi quadra destra
~Tilde
\Backslash
FFAvanzamento pagina
§03

Packing a 7 bit

Poiché ogni carattere è di 7 bit ma gli ottetti sono di 8, GSM-7 comprime i settetti oltre i confini dei byte. Otto caratteri a 7 bit entrano in sette ottetti a 8 bit, quindi 160 settetti riempiono 140 ottetti — il limite dei dati utente dell'SMS. Il packing sposta i bit di ciascun carattere successivo per riempire gli spazi, ed è per questo che una lettura ingenua byte-per-carattere di un SMS GSM-7 appare confusa.

Packing dei settetti — 160 settetti → 140 ottettitext
8 characters (56 bits) ────► 7 octets (56 bits)
160 GSM-7 septets       ────► 140 octets (the SMS payload limit)
                              (an extension char = 2 septets)
§04

Tabelle di shift linguistico

3GPP TS 23.038 definisce inoltre tabelle di shift per lingue nazionali (ad esempio turco, spagnolo, portoghese) che rimappano alcune posizioni della tabella di estensione su lettere specifiche della lingua. Il supporto è disomogeneo tra terminali e reti, quindi molti mittenti evitano di farvi affidamento e ricorrono a UCS-2 quando un messaggio richiede caratteri esterni al set base GSM-7.

FAQ

Domande frequenti

Quanti caratteri entrano in un SMS GSM-7?

160 caratteri in un singolo SMS, perché 160 settetti di 7 bit ciascuno riempiono il limite di 140 ottetti dei dati utente. I messaggi GSM-7 concatenati scendono a 153 caratteri per segmento per fare spazio all'User Data Header.

Quali caratteri contano come due in GSM-7?

I dieci caratteri della tabella di estensione — | ^ € { } [ ] ~ \ e il form-feed — costano ciascuno due settetti perché richiedono un prefisso di escape. Usarne uno qualsiasi riduce la quantità di testo che entra in un singolo SMS.

Il simbolo dell'euro è in GSM-7?

Sì, ma nella tabella di estensione, quindi costa due settetti anziché uno. Un messaggio contenente € entra perciò in meno caratteri prima di richiedere un secondo segmento.

Perché un messaggio GSM-7 appare confuso a livello di byte?

Perché GSM-7 comprime i caratteri a 7 bit oltre i confini degli ottetti a 8 bit. Otto caratteri occupano sette ottetti, quindi leggere il payload un byte per carattere dà risultati privi di senso — occorre prima scompattare i settetti.

Cosa succede se il mio testo ha un carattere non presente in GSM-7?

L'intero messaggio deve passare alla codifica UCS-2 (a 16 bit), che riduce la capacità del singolo SMS da 160 a 70 caratteri. Un solo carattere non-GSM-7 (un'emoji, una virgoletta tipografica o molte lettere non latine) impone questo passaggio.

Riferimenti

Specifiche della fonte

Gli standard pubblicati su cui si basa questa pagina. Si apre in una nuova scheda.

BNGestito dal team di ingegneri BroadNet·Servizi di messaggistica di livello carrier dal 2003
Mettilo sul filo

Realizzato con un vero binding SMPP e un'API REST.

Richiedi l'accesso di prova con chiavi di test reali: invia prima al tuo numero verificato, poi passa alla produzione in oltre 200 paesi una volta approvata l'identità del mittente e i percorsi.