Come si calcola la lunghezza di un SMS
Un SMS trasporta 140 ottetti (1.120 bit) di dati utente. Nell'alfabeto predefinito GSM a 7 bit ogni carattere occupa 7 bit, quindi 140 ottetti contengono 160 caratteri. In UCS-2 (la codifica Unicode a 16 bit usata per gli SMS) ogni carattere occupa 2 ottetti, quindi lo stesso spazio contiene 70 caratteri.
Quando un messaggio è più lungo di un SMS, viene inviato come messaggio concatenato. Ogni parte inizia con un User Data Header (UDH) di 6 ottetti che porta un numero di riferimento, il numero totale di parti e la posizione della parte, così il telefono può riassemblarle. Quell'intestazione lascia 134 ottetti per parte: 153 caratteri GSM-7 o 67 caratteri UCS-2.
Il destinatario vede un solo messaggio, ma operatori e fornitori fatturano ogni parte. Un messaggio GSM-7 di 161 caratteri costa due SMS, e anche un messaggio arabo di 71 caratteri ne costa due.
- GSM-7: 160 caratteri in un SMS, 153 per parte quando è concatenato (306 per 2 parti, 459 per 3).
- UCS-2: 70 caratteri in un SMS, 67 per parte quando è concatenato (134 per 2 parti, 201 per 3).
- Un solo carattere non GSM in qualsiasi punto del testo porta l'intero messaggio a UCS-2.
L'alfabeto GSM-7 e la sua tabella di estensione
L'alfabeto predefinito GSM a 7 bit è definito in 3GPP TS 23.038 (in origine GSM 03.38). La sua tabella di base ha 128 posizioni: lettere latine e cifre, punteggiatura comune e caratteri come @ £ $ ¥ è é ù ì ò Ç Ø ø Å å Ä Ö Ñ Ü ä ö ñ ü à ß Æ æ É ¿ ¡ § e le maiuscole greche Δ Φ Γ Λ Ω Π Ψ Σ Θ Ξ. Anche il line feed e il carriage return sono caratteri singoli.
Altri dieci caratteri si trovano nella tabella di estensione e si raggiungono tramite un codice di escape, quindi ciascuno costa due septet: il simbolo dell'euro €, l'accento circonflesso ^, le parentesi graffe { }, le parentesi quadre [ ], la tilde ~, la barra verticale |, la barra rovesciata \ e il form feed. Un messaggio con 158 lettere e un € è esattamente di 160 septet; aggiungete una lettera e diventa di due segmenti.
Una sequenza di escape deve restare in una sola parte, quindi un carattere da due septet che attraverserebbe il confine dei 153 septet passa alla parte successiva. Questo contatore applica quella regola, ed è per questo che una parte può finire a 152.
TS 23.038 definisce anche tabelle di spostamento per lingue nazionali (ad esempio turco, spagnolo, portoghese e diversi alfabeti indiani) che mantengono alcuni messaggi nella codifica a 7 bit. Il supporto dipende dalla rete e dal telefono, quindi la maggior parte delle piattaforme, e questo contatore, usa solo l'alfabeto predefinito.
Caratteri che portano silenziosamente il vostro SMS a Unicode
La maggior parte dei messaggi inaspettatamente limitati a 70 caratteri è causata da testo copiato da un elaboratore di testi, da un CMS o da una tastiera del telefono che inserisce automaticamente caratteri tipografici. Sembrano quasi identici ai loro equivalenti GSM-7, ma sono punti di codice diversi.
Anche le lettere accentate che non sono nella tabella, come á í ó ú â ê ã õ e la ç minuscola, forzano UCS-2. Sostituitele solo se il vostro pubblico accetta una grafia senza accenti; per molte lingue l'ortografia corretta conta più del segmento in più.
- Virgolette e apostrofi tipografici ‘ ’ “ ” (usate ' e ").
- Trattini en e em – — (usate -) e i puntini di sospensione … (usate ...).
- Spazi non separabili e sottili, spesso invisibili dopo copia e incolla (usate uno spazio normale).
- Caratteri di larghezza zero e byte order mark nascosti nei template (rimuoveteli).
- Emoji: la maggior parte occupa 2 unità UCS-2, una bandiera o un'emoji con tonalità della pelle ne occupa 4 e una sequenza famiglia ne occupa 8 o più.
Convertire un messaggio in GSM-7 con un clic
Quando un messaggio è in Unicode, il pulsante Converti in GSM-7 lo riscrive con soli caratteri GSM-7 dove è sicuro farlo: virgolette e trattini tipografici diventano semplici, gli spazi invisibili vengono rimossi, gli accenti che GSM-7 non ha vengono eliminati (á → a, ã → a, ç minuscola → Ç) e legature e simboli vengono scritti per esteso (œ → oe, ™ → TM). I caratteri già GSM-7, come é, ü, ñ, ß e €, vengono mantenuti.
Lo strumento elenca ogni modifica e mostra il numero di segmenti prima e dopo, e Annulla ripristina il testo originale. L'arabo non può essere convertito: un messaggio arabo resta sempre in Unicode a 70 caratteri per SMS, quindi accorciatelo oppure inviatelo su WhatsApp. Anche emoji e altri alfabeti non latini vengono lasciati così come sono.
SMS in arabo: 70 caratteri, 67 per parte
Le lettere arabe non fanno parte di GSM-7, quindi ogni SMS arabo viene inviato in UCS-2: 70 caratteri in un singolo messaggio e 67 per parte quando è più lungo. Un messaggio arabo di 140 caratteri sono tre segmenti fatturati, non due, perché 140 è più di 2 × 67 = 134.
Conta ogni punto di codice, compresi spazi, lettere latine mescolate al testo, cifre indo-arabe e segni diacritici (tashkeel). Una parola completamente vocalizzata può usare il doppio delle unità della stessa parola senza harakat, quindi omettete i segni diacritici nei messaggi transazionali a meno che non servano a evitare ambiguità.
Per OTP e avvisi nel GCC, mantenete il testo arabo sotto i 70 caratteri dove potete, mettete il codice all'inizio del messaggio ed evitate le emoji. Se inviate lo stesso avviso in inglese, la versione inglese può essere più del doppio più lunga allo stesso prezzo.
Dai segmenti al costo
La vostra fattura SMS mensile dipende dai segmenti, non dai messaggi: segmenti per messaggio × messaggi al mese × la tariffa della rete di destinazione. Ridurre una campagna da 2 segmenti a 1 dimezza il costo di ogni invio.
Controllate il testo finale con le variabili compilate. Il nome di un cliente, un numero d'ordine o un link accorciato possono spingere un template oltre un confine, e nomi in arabo o con accenti possono portare un template GSM-7 a UCS-2 solo per alcuni destinatari.
- Testate i valori realistici più lunghi di ogni segnaposto.
- Accorciate i link e rimuovete spazi finali e interruzioni di riga.
- Preferite un'unica call to action chiara a lunghi messaggi in più parti.
