Rilevare la codifica significa verificare se ogni carattere è nell'alfabeto GSM-7; se anche uno solo non lo è, l'intero messaggio diventa UCS-2 e la capacità scende da 160 a 70 caratteri. Poiché gli SMS sono fatturati per segmento, una singola emoji o virgoletta curva spuria può raddoppiare o triplicare il costo di un messaggio.
Come rilevare GSM-7 vs UCS-2
La regola è semplice e assoluta: se ogni carattere del messaggio è presente nella tabella base o di estensione GSM-7, il messaggio può essere inviato come GSM-7; se un carattere qualsiasi non lo è, l'intero messaggio deve usare UCS-2. Il rilevamento è quindi un test di appartenenza all'insieme dell'alfabeto GSM-7, applicato all'intera stringa, ricordando che i dieci caratteri di estensione contano due settetti ciascuno.
for each character c in message:
if c not in GSM7_BASIC and c not in GSM7_EXTENSION:
encoding = UCS-2 # one stray char forces the whole message
break
else:
encoding = GSM-7I caratteri che impongono silenziosamente UCS-2
I caratteri costosi sono quelli che gli utenti introducono senza accorgersene. Gli elaboratori di testi e i telefoni sostituiscono automaticamente virgolette e trattini semplici con versioni tipografiche non presenti in GSM-7. Le emoji non sono mai in GSM-7. I nomi non latini e qualsiasi lettera accentata esterna al set di accenti GSM-7 fanno lo stesso. Sanificarli prima dell'invio — sostituendo la punteggiatura tipografica con ASCII, traslitterando dove accettabile — mantiene i messaggi su GSM-7.
| Carattere scatenante | Sostituzione sicura GSM-7 |
|---|---|
| ' ' (virgolette singole curve) | ' (apostrofo dritto) |
| “ ” (virgolette doppie curve) | " (virgolette dritte) |
| – — (trattino en/em) | - (trattino) |
| … (puntini di sospensione) | ... (tre punti) |
| emoji | (rimuovere o descrivere a parole) |
| spazio non interruttibile | (spazio normale) |
Come la codifica determina il numero di segmenti
Gli SMS sono addebitati per segmento e la codifica stabilisce quanti segmenti richiede un messaggio. Le soglie sono fisse: GSM-7 dà 160 in un segmento poi 153 per parte; UCS-2 dà 70 poi 67. Così un messaggio di 75 caratteri è un segmento in GSM-7 ma due in UCS-2. Un SMS promozionale di 160 caratteri con una emoji passa da uno a tre segmenti. La codifica è il maggior fattore controllabile del costo per messaggio.
| Segmenti | Caratteri GSM-7 | Caratteri UCS-2 |
|---|---|---|
| 1 | 1 – 160 | 1 – 70 |
| 2 | 161 – 306 | 71 – 134 |
| 3 | 307 – 459 | 135 – 201 |
| n (n ≥ 2) | 153 × n | 67 × n |
Controllo pratico dei costi
Tre abitudini rendono prevedibile il costo degli SMS. Primo, validate e sanificate i caratteri di ogni messaggio in uscita, segnalando qualsiasi cosa imponga UCS-2. Secondo, mantenete i template entro un singolo segmento GSM-7 (≤160 caratteri) ovunque il messaggio lo consenta. Terzo, misurate il numero effettivo di segmenti per messaggio e per campagna, poiché è quello — non il conteggio dei caratteri — ciò che vi viene fatturato. Un calcolatore di segmenti rende visibile il compromesso prima dell'invio.
Domande frequenti
Come faccio a sapere se il mio SMS è GSM-7 o UCS-2?
Verificate ogni carattere rispetto all'alfabeto GSM-7. Se tutti i caratteri sono nella tabella base o di estensione GSM-7, è GSM-7; se un singolo carattere non lo è, l'intero messaggio è UCS-2. Un verificatore GSM-7/Unicode automatizza il controllo ed evidenzia i caratteri problematici.
Quanto mi costa una emoji in un SMS?
Potenzialmente molto. Una emoji impone l'intero messaggio a UCS-2, riducendo la capacità da 160 a 70 caratteri. Un messaggio di 160 caratteri con una sola emoji passa da uno a tre segmenti, triplicandone all'incirca il costo.
Come viene fatturato un SMS multi-segmento?
Ogni segmento è fatturato come un SMS separato. Un messaggio che si divide in tre parti è addebitato come tre messaggi. Per questo la codifica, che stabilisce la capacità per segmento, è la maggior leva sul costo.
Come posso mantenere i messaggi su GSM-7?
Sanificate l'input prima dell'invio: sostituite virgolette curve e trattini con equivalenti ASCII, rimuovete le emoji e traslitterate gli accenti spuri dove accettabile. Mantenete i template entro 160 caratteri GSM-7 così da restare in un solo segmento.
È il numero di caratteri o di segmenti a determinare il costo?
Il numero di segmenti. Due messaggi con lo stesso numero di caratteri possono costare importi diversi se uno usa UCS-2. Misurate sempre i segmenti effettivi per messaggio, non la lunghezza grezza in caratteri.
Specifiche della fonte
Gli standard pubblicati su cui si basa questa pagina. Si apre in una nuova scheda.