BroadNet
Codifica SMSSet di caratteri

UCS-2 e SMS Unicode

Aggiornato il 3 min di letturaBasato su standard
Risposta diretta

UCS-2 è la codifica a 16 bit che gli SMS usano per qualsiasi testo contenente caratteri esterni all'alfabeto GSM-7 — scritture non latine, emoji, virgolette tipografiche. Ogni carattere occupa due ottetti, quindi un singolo SMS UCS-2 contiene 70 caratteri e i segmenti concatenati ne contengono 67 ciascuno. Un solo carattere non-GSM-7 impone l'intero messaggio a UCS-2.

§01

Perché gli SMS hanno bisogno di UCS-2

GSM-7 copre solo 128 caratteri più un piccolo insieme di estensione. Qualsiasi altra cosa — arabo, cinese, cirillico, ebraico, thai, emoji, e persino caratteri tipografici come le virgolette curve e i trattini medi — non è rappresentabile. Per questi, gli SMS passano a UCS-2, una codifica a larghezza fissa di 16 bit (di fatto UTF-16 big-endian per il Basic Multilingual Plane). È segnalata da data_coding 0x08.

§02

Capacità: 70 e 67

Il campo dei dati utente dell'SMS è di 140 ottetti. A due ottetti per carattere, UCS-2 fa entrare 70 caratteri in un singolo messaggio. Quando un messaggio è concatenato, l'User Data Header di 6 byte consuma payload, lasciando 134 ottetti — 67 caratteri per segmento. È meno della metà della capacità di GSM-7, ed è per questo che la scelta della codifica ha un forte impatto sui costi.

Capacità per messaggio in base alla codifica
CodificaSingolo SMSPer segmento concatenato
GSM-7 (7-bit)160 caratteri153 caratteri
Binario a 8 bit140 byte134 byte
UCS-2 (16-bit)70 caratteri67 caratteri
§03

Cosa attiva UCS-2

La codifica è tutto-o-niente per messaggio: un solo carattere esterno a GSM-7 impone l'intero messaggio a UCS-2, riducendo la capacità da 160 a 70. I colpevoli comuni sono facili da introdurre inavvertitamente — un apostrofo curvo da un elaboratore di testi, un trattino lungo, un'emoji o un nome non latino. Rilevarli prima dell'invio è la leva più importante sul costo degli SMS.

Caratteri che impongono UCS-2
CategoriaEsempi
Emoji😀 ✅ 🚀 ❤️
Punteggiatura tipografica' ' “ ” – — …
Script non latiniالعربية · 中文 · Кириллица · עברית · ไทย
Lettere accentate non presenti in GSM-7â ê î ô û ã õ ą ę ř
§04

L'insidia delle coppie surrogate

UCS-2 è strettamente a 16 bit e copre il Basic Multilingual Plane di Unicode. I caratteri oltre U+FFFF — molte emoji moderne, ad esempio — sono rappresentati in UTF-16 come coppie surrogate di due unità di codice a 16 bit, quindi una singola di queste emoji consuma quattro ottetti (due 'caratteri' UCS-2). Un messaggio che sembra una sola emoji può perciò contare come due rispetto al limite di 70/67.

FAQ

Domande frequenti

Quanti caratteri entrano in un SMS Unicode?

70 caratteri in un singolo messaggio UCS-2 e 67 per segmento quando il messaggio è concatenato. Questo perché ogni carattere è di 16 bit (due ottetti) rispetto al limite di 140 ottetti del payload SMS.

Cosa fa passare un SMS a UCS-2?

Qualsiasi singolo carattere esterno all'alfabeto GSM-7 — un'emoji, una virgoletta curva, un trattino lungo o testo non latino — impone l'intero messaggio a UCS-2. La codifica è scelta per messaggio, non per carattere.

UCS-2 è uguale a UTF-16?

Quasi. UCS-2 è a 16 bit fissi e copre il Basic Multilingual Plane. Gli SMS trattano il payload come UTF-16 big-endian, quindi i caratteri oltre U+FFFF (molte emoji) diventano coppie surrogate e occupano quattro ottetti.

Perché a volte un'emoji conta come due caratteri?

Le emoji oltre U+FFFF sono codificate come coppie surrogate UTF-16 — due unità di codice a 16 bit — quindi un singolo glifo consuma due dei 70 (o 67) slot di caratteri UCS-2 disponibili.

Come evito di inviare inavvertitamente UCS-2?

Sanificate l'input prima dell'invio: sostituite virgolette e trattini tipografici con i loro equivalenti ASCII, rimuovete o traslitterate gli accenti spuri e verificate la presenza di emoji. Un verificatore GSM-7/Unicode segnala i caratteri esatti che impongono UCS-2.

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.