Detetar a codificação significa verificar se cada caractere está no alfabeto GSM-7; se sequer um não estiver, a mensagem inteira torna-se UCS-2 e a capacidade cai de 160 para 70 caracteres. Como o SMS é faturado por segmento, um único emoji ou aspa curva avulso pode duplicar ou triplicar o custo de uma mensagem.
Como detetar GSM-7 vs UCS-2
A regra é simples e absoluta: se cada caractere da mensagem estiver presente na tabela básica ou de extensão GSM-7, a mensagem pode ser enviada como GSM-7; se algum caractere não estiver, a mensagem inteira tem de usar UCS-2. A deteção é, por isso, um teste de pertença a conjunto face ao alfabeto GSM-7, aplicado à string toda, lembrando que os dez caracteres de extensão contam como dois septetos cada.
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-7Os caracteres que forçam silenciosamente o UCS-2
Os caracteres caros são os que os utilizadores introduzem sem reparar. Processadores de texto e telefones substituem automaticamente aspas e hífenes retos por versões tipográficas que não estão no GSM-7. Os emoji nunca estão no GSM-7. Nomes não latinos e qualquer letra acentuada fora do conjunto de acentos GSM-7 fazem o mesmo. Higienizar estes antes de enviar — substituindo pontuação tipográfica por ASCII, transliterando quando aceitável — mantém as mensagens em GSM-7.
| Caractere desencadeador | Substituição segura GSM-7 |
|---|---|
| ' ' (aspas simples curvas) | ' (apóstrofo reto) |
| “ ” (aspas duplas curvas) | " (aspas retas) |
| – — (meia-risca / travessão) | - (hífen) |
| … (reticências) | ... (três pontos) |
| emoji | (remover ou descrever em palavras) |
| espaço sem quebra | (espaço normal) |
Como a codificação determina a contagem de segmentos
O SMS é cobrado por segmento, e a codificação define quantos segmentos uma mensagem precisa. Os limiares são fixos: o GSM-7 dá 160 num segmento e depois 153 por parte; o UCS-2 dá 70 e depois 67. Assim, uma mensagem de 75 caracteres é um segmento em GSM-7 mas dois em UCS-2. Um SMS promocional de 160 caracteres com um emoji salta de um segmento para três. A codificação é o maior fator controlável do custo por mensagem.
| Segmentos | caracteres GSM-7 | Caracteres UCS-2 |
|---|---|---|
| 1 | 1 – 160 | 1 – 70 |
| 2 | 161 – 306 | 71 – 134 |
| 3 | 307 – 459 | 135 – 201 |
| n (n ≥ 2) | 153 × n | 67 × n |
Controlo prático de custos
Três hábitos mantêm o custo do SMS previsível. Primeiro, valide e higienize os caracteres de cada mensagem de saída, assinalando tudo o que força o UCS-2. Segundo, mantenha os modelos dentro de um único segmento GSM-7 (≤160 caracteres) sempre que a mensagem o permita. Terceiro, meça a contagem de segmentos realizada por mensagem e por campanha, pois é isso — não a contagem de caracteres — que lhe é faturado. Uma calculadora de segmentos torna o compromisso visível antes de enviar.
Perguntas frequentes
Como sei se o meu SMS é GSM-7 ou UCS-2?
Verifique cada caractere face ao alfabeto GSM-7. Se todos os caracteres estiverem na tabela básica ou de extensão GSM-7, é GSM-7; se algum único caractere não estiver, a mensagem inteira é UCS-2. Um verificador GSM-7/Unicode automatiza isto e destaca os caracteres em falta.
Quanto me custa um emoji num SMS?
Potencialmente muito. Um emoji força a mensagem inteira para UCS-2, reduzindo a capacidade de 160 para 70 caracteres. Uma mensagem de 160 caracteres com um único emoji passa de um segmento para três, triplicando aproximadamente o custo.
Como é faturado um SMS de vários segmentos?
Cada segmento é faturado como um SMS separado. Uma mensagem que se divide em três partes é cobrada como três mensagens. É por isso que a codificação, que define a capacidade por segmento, é a maior alavanca do custo.
Como posso manter as mensagens em GSM-7?
Higienize a entrada antes de enviar: substitua aspas curvas e travessões por equivalentes ASCII, remova emoji e translitere acentos avulsos quando aceitável. Mantenha os modelos dentro de 160 caracteres GSM-7 para que fiquem num segmento.
É a contagem de caracteres ou de segmentos que determina o custo?
A contagem de segmentos. Duas mensagens com a mesma contagem de caracteres podem custar valores diferentes se uma usar UCS-2. Meça sempre os segmentos realizados por mensagem, não o comprimento bruto em caracteres.
Especificações de origem
Os padrões publicados nos quais esta página se baseia. Abre num novo separador.