Limiti di caratteri degli SMS: GSM-7, Unicode, arabo ed emoji
Limiti di caratteri degli SMS spiegati: GSM-7 e UCS-2, 160 e 70 caratteri, 153 e 67 per segmento, e perché arabo ed emoji aumentano i costi.
Di OmniChannels.ai Editorial Team · Revisione di BroadNet Messaging Solutions Team
SMS e OTP
Risposta breve
Un singolo SMS contiene 140 byte di testo. Con l'alfabeto GSM a 7 bit, usato per il testo latino di base, sono 160 caratteri; in Unicode (UCS-2), necessario per arabo, emoji e molte lettere accentate, sono 70. I messaggi più lunghi vengono divisi in segmenti da 153 caratteri GSM-7 o 67 caratteri Unicode, e ogni segmento è fatturato. Un solo carattere fuori dall'alfabeto GSM porta l'intero messaggio in Unicode.
In questa pagina
Punti chiave
- Un SMS contiene 140 ottetti di dati utente: 160 caratteri GSM-7 o 70 caratteri UCS-2, come definito in 3GPP TS 23.040 e TS 23.038.
- I messaggi concatenati perdono spazio a causa di un header in ogni parte, lasciando 153 caratteri GSM-7 o 67 caratteri UCS-2 per segmento.
- Una sola lettera araba, una emoji, un apice tipografico o un accento non supportato porta l'intero messaggio nella codifica UCS-2.
- I caratteri di estensione GSM-7 come €, [, ], {, }, ~, \ e | contano come due caratteri perché richiedono un codice di escape.
- Gli SMS in arabo costano di più per parola rispetto all'inglese a causa dell'UCS-2, quindi la revisione della lunghezza incide direttamente sul costo della campagna.
Questa guida è pensata per marketer, team CRM e sviluppatori che scrivono SMS in italiano, inglese, arabo o altre lingue e vogliono controllare costi e recapito. Imparerete come funziona la codifica degli SMS, quanti caratteri entrano in ogni segmento e come scrivere messaggi che restino entro un numero prevedibile di segmenti.
Quanti caratteri entrano in un SMS?
Un SMS contiene 140 ottetti (byte) di dati utente. Quanti caratteri ci stiano dipende dalla codifica, e il provider sceglie la codifica automaticamente in base ai caratteri che usate.
Le regole derivano da due specifiche 3GPP: TS 23.040, che definisce la struttura del messaggio SMS, e TS 23.038, che definisce gli alfabeti.
| Codifica | Bit per carattere | SMS singolo | Per segmento se diviso | Usata per |
|---|---|---|---|---|
| Alfabeto predefinito GSM a 7 bit | 7 | 160 caratteri | 153 caratteri | Lettere latine di base, cifre, punteggiatura comune, alcune lettere accentate |
| UCS-2 (Unicode a 16 bit) | 16 | 70 caratteri | 67 caratteri | Arabo, emoji, cinese, la maggior parte dei caratteri accentati e speciali |
| Dati a 8 bit | 8 | 140 byte | 134 byte | Dati binari, non testo normale |
L'aritmetica è semplice: 140 ottetti × 8 bit ÷ 7 bit = 160 caratteri GSM-7 e 140 ÷ 2 byte = 70 caratteri UCS-2.
Qual è la differenza tra GSM-7 e UCS-2?
GSM-7 è un alfabeto compatto a 7 bit progettato per gli SMS. UCS-2 è una codifica Unicode a 16 bit che può rappresentare quasi qualsiasi scrittura ma usa più del doppio dello spazio per carattere.
GSM-7 copre A–Z, a–z, 0–9, la punteggiatura comune, un insieme di simboli come @, £, $, % e & e un insieme limitato di lettere accentate tra cui é, è, ü, ñ e à. Non include molte lettere accentate usate in francese, spagnolo o portoghese, come á, ç (minuscola), ê o õ, né alcuna scrittura araba, cirillica o asiatica. Per l'italiano, le vocali accentate più comuni come è, é, à, ù, ò e ì rientrano in GSM-7, ma le maiuscole accentate come È sono un caso da verificare con il contatore di segmenti.
La tabella di estensione
Alcuni caratteri comuni risiedono in una tabella di estensione GSM-7 e richiedono prima un codice di escape, quindi ciascuno conta come due caratteri: € [ ] { } ~ \ | ^ e il salto pagina (form feed). Un messaggio con diversi simboli dell'euro o parentesi perde rapidamente capacità.
Tabelle linguistiche nazionali
TS 23.038 definisce anche tabelle di shift linguistico nazionale per lingue come turco, spagnolo, portoghese e diverse lingue indiane, che consentono più caratteri in modalità a 7 bit. Il supporto dipende da reti, provider e telefoni, quindi non fateci affidamento senza testare sugli operatori di destinazione.
Perché un SMS lungo usa 153 o 67 caratteri per segmento?
Quando un messaggio supera un singolo SMS, viene diviso in segmenti e ogni segmento porta un header dei dati utente (UDH) che indica al telefono come riassemblarlo. L'header abituale occupa 6 ottetti, lasciando 134 ottetti per il testo.
- In GSM-7, 134 ottetti contengono 153 caratteri.
- In UCS-2, 134 ottetti contengono 67 caratteri.
Il telefono mostra un unico messaggio, ma il vostro provider e l'operatore contano e di norma fatturano ogni segmento.
| Segmenti | Massimo di caratteri GSM-7 | Massimo di caratteri UCS-2 |
|---|---|---|
| 1 | 160 | 70 |
| 2 | 306 | 134 |
| 3 | 459 | 201 |
| 4 | 612 | 268 |
| 5 | 765 | 335 |
Due dettagli pratici modificano il conteggio esatto. I provider evitano di dividere tra due segmenti una sequenza di estensione di due caratteri o una emoji, quindi un segmento può contenere un carattere in meno del massimo teorico. Inoltre molti provider fissano un tetto al numero di segmenti per messaggio, quindi i testi molto lunghi possono essere rifiutati o troncati; verificate il limite del vostro provider.
Perché arabo ed emoji cambiano il costo?
Qualsiasi carattere fuori da GSM-7 porta l'intero messaggio in UCS-2. Questo riduce il limite del messaggio singolo da 160 a 70 caratteri e quello per segmento da 153 a 67.
- Il testo arabo usa sempre UCS-2. Un messaggio arabo di 100 caratteri richiede due segmenti; la stessa lunghezza in inglese ne richiede uno.
- Le emoji sono fuori da GSM-7. La maggior parte delle emoji si trova fuori dal Basic Multilingual Plane di Unicode ed è rappresentata in UTF-16 come coppia surrogata, due unità da 16 bit, quindi occupa due delle 70 posizioni disponibili. Le emoji combinate, come bandiere o varianti di tonalità della pelle, ne occupano di più.
- Colpevoli nascosti nel testo in inglese e in italiano: apici tipografici (’ “ ”), trattini en ed em (– —), il carattere dei puntini di sospensione (…) e gli spazi non separabili, spesso incollati da programmi di videoscrittura o strumenti di design. Anche uno solo di essi porta il messaggio in UCS-2.
Esempio pratico: una campagna per un centro commerciale di Riyadh
"Najm Mall" (nome di fantasia) pianifica un SMS per il weekend a 200.000 clienti in italiano e in arabo. Abbiamo contato i caratteri di ogni bozza.
| Bozza | Caratteri | Codifica | Segmenti |
|---|---|---|---|
| Italiano con trattini semplici, senza emoji | 127 | GSM-7 | 1 |
| Stesso testo italiano con due trattini en e una emoji | 130 unità | UCS-2 | 2 |
| Arabo, prima bozza | 153 | UCS-2 | 3 |
| Arabo, rivisto | 101 | UCS-2 | 2 |
La versione italiana: "Najm Mall: saldi del weekend, fino al 30% su casa e cucina. Ven-Sab 10-22. Mostra questo SMS in cassa. Rispondi STOP per uscire". Aggiungere una emoji di festa e trattini tipografici ha raddoppiato il numero di segmenti per il pubblico italofono. Rivedere il testo arabo da tre segmenti a due ha ridotto di un terzo il costo per quel pubblico, con la stessa offerta e la stessa scadenza.
Come scrivere SMS che ci stanno?
Decidete prima il budget di segmenti, poi scrivete in base a quello. Una checklist per ogni campagna:
- Fissate un obiettivo: un segmento per OTP e avvisi; uno o due per il marketing.
- Scrivete in un editor di testo semplice e convertite apici e trattini tipografici in quelli normali.
- Eliminate le emoji dai messaggi in italiano e in inglese, a meno che abbiate deciso che il segmento in più valga la pena.
- Usate un contatore di segmenti che rilevi la codifica prima dell'invio e verificate l'anteprima del testo finale, compresi i campi di personalizzazione alla massima lunghezza probabile.
- Tenete conto delle variabili: un nome cliente o di prodotto lungo può spingere un messaggio nel segmento successivo.
- Per l'arabo, rimuovete i segni diacritici (tashkeel) e gli allungamenti decorativi (tatweel), che contano ciascuno come caratteri; preferite formulazioni brevi e usate abbreviazioni che il vostro pubblico legge con naturalezza.
- Accorciate i link con un vostro dominio brandizzato invece di incollare lunghi URL di tracciamento.
- Testate sui telefoni in ogni lingua per confermare visualizzazione e numero di segmenti.
Per gli OTP, mettete il codice all'inizio e mantenete il messaggio entro un segmento; vedi la nostra guida agli OTP. Per la pianificazione delle campagne, vedi le best practice per gli SMS massivi.
Errori comuni e limiti
- Contare i caratteri, non la codifica. Un messaggio di 90 caratteri può essere un segmento o due.
- Mescolare le lingue senza attenzione. Una sola parola araba in un messaggio in italiano porta l'intero messaggio in Unicode.
- Ignorare la tabella di estensione. I prezzi in euro e le parentesi contano doppio in GSM-7.
- Dimenticare la lunghezza della personalizzazione. Testate con i valori più lunghi presenti nei vostri dati.
- Dare per scontato che ogni provider conti allo stesso modo. Regole di divisione e numero massimo di segmenti differiscono; confermate con il vostro provider.
- Limiti di questa guida: telefoni e reti gestiscono talvolta in modo diverso i casi limite, soprattutto le tabelle linguistiche nazionali e le emoji complesse. Testate i messaggi critici sugli operatori verso cui inviate.
Come vi aiuta OmniChannels.ai
OmniChannels.ai supporta arabo e inglese nelle campagne SMS e negli altri canali, con anteprima del messaggio prima dell'invio, caricamento di file Excel o CSV, programmazione e filtro dei duplicati. I rapporti di consegna, con viste di sintesi e avanzate, filtri ed esportazione CSV, vi aiutano a riconciliare ciò che è stato inviato e consegnato. Gli SMS vengono consegnati tramite BroadNet Technologies, azienda di messaggistica per telecomunicazioni con connettività diretta agli operatori SMS, e la fatturazione avviene tramite un portafoglio prepagato. Scoprite di più sulle campagne multicanale.
Domande frequenti
Quanti caratteri ci sono in un SMS?
Un SMS contiene 140 ottetti di dati utente. Con l'alfabeto predefinito GSM a 7 bit equivalgono a 160 caratteri. Con la codifica Unicode UCS-2, richiesta per arabo, cinese, emoji e caratteri fuori dall'alfabeto GSM, equivalgono a 70 caratteri. Se il messaggio è più lungo, viene inviato come più segmenti collegati e di norma fatturato per segmento.
Perché un SMS lungo ha 153 caratteri per parte invece di 160?
Quando un messaggio viene diviso, ogni parte porta un header dei dati utente che indica al telefono come riassemblare i pezzi. L'header più comune occupa 6 ottetti, lasciando spazio per 153 caratteri GSM-7 o 67 caratteri UCS-2 in ogni segmento. Il telefono mostra le parti come un unico messaggio, ma la rete e il vostro provider le contano separatamente.
Quanti caratteri può avere un SMS in arabo?
L'arabo non fa parte dell'alfabeto GSM a 7 bit, quindi gli SMS in arabo usano la codifica UCS-2: 70 caratteri in un singolo messaggio, oppure 67 per segmento quando il messaggio è più lungo. Anche spazi, punteggiatura e cifre occidentali presenti in un messaggio in arabo contano nel limite Unicode, perché l'intero messaggio usa un'unica codifica.
Le emoji rendono più costosi gli SMS?
Di solito sì. Una emoji non fa parte dell'alfabeto GSM, quindi una sola emoji porta l'intero messaggio in Unicode e riduce il limite del messaggio singolo da 160 a 70 caratteri. Inoltre la maggior parte delle emoji occupa due unità da 16 bit, e alcune emoji combinate, come le bandiere, ne occupano di più, consumando altro spazio nel limite Unicode.
Posso inviare SMS in arabo in GSM-7 per risparmiare?
Solo scrivendo l'arabo in lettere latine, a volte chiamato Arabizi. Così rientra in GSM-7, ma molti clienti lo trovano più difficile da leggere e può apparire meno affidabile per un brand. Un risparmio migliore si ottiene rivedendo con attenzione il testo arabo, eliminando i segni diacritici e gli allungamenti decorativi e puntando a un numero fisso di segmenti.
Fonti
Continuate a leggere
Altre guideSMS e OTP
Cos'è l'SMS A2P? Come i messaggi aziendali arrivano al telefono
Cos'è l'SMS A2P? Differenze rispetto al P2P, percorso dall'app al telefono, rotte dirette e indirette, grey route e cosa chiedere ai provider SMS.
8 min di lettura
SMS e OTP
Invio SMS massivo: buone pratiche per campagne che arrivano
Buone pratiche per l'invio SMS massivo: pulizia delle liste, orari consentiti, struttura del messaggio, disiscrizione, rapporti di consegna e test preliminari.
8 min di lettura
Integrazione
Come scegliere una API di messaggistica: checklist per i CTO
Come scegliere una API di messaggistica: checklist per CTO su canali, rotte, webhook, sicurezza, limiti di frequenza, retry, SMPP, MCP, conformità e prezzi.
13 min di lettura
