BroadNet
Codificação SMSConjuntos de caracteres

UCS-2 e SMS Unicode

Atualizado em 3 min de leituraBaseado em padrões
Resposta direta

O UCS-2 é a codificação de 16 bits que o SMS usa para qualquer texto que contenha caracteres fora do alfabeto GSM-7 — scripts não latinos, emoji, aspas curvas. Cada caractere ocupa dois octetos, pelo que um SMS UCS-2 único contém 70 caracteres e os segmentos concatenados contêm 67 cada. Um único caractere fora do GSM-7 força toda a mensagem para UCS-2.

§01

Porque é que o SMS precisa de UCS-2

O GSM-7 cobre apenas 128 caracteres mais um pequeno conjunto de extensão. Tudo o resto — árabe, chinês, cirílico, hebraico, tailandês, emoji, e até caracteres tipográficos como aspas curvas e travessões — não é representável. Para esses, o SMS muda para UCS-2, uma codificação de 16 bits de largura fixa (efetivamente UTF-16 big-endian para o Plano Multilingue Básico). É sinalizado por data_coding 0x08.

§02

Capacidade: 70 e 67

O campo de dados de utilizador do SMS tem 140 octetos. A dois octetos por caractere, o UCS-2 cabe em 70 caracteres numa mensagem única. Quando uma mensagem é concatenada, o User Data Header de 6 bytes consome conteúdo, deixando 134 octetos — 67 caracteres por segmento. Isto é menos de metade da capacidade do GSM-7, e é por isso que a escolha de codificação tem um grande impacto no custo.

Capacidade por mensagem por codificação
CodificaçãoSMS únicoPor segmento concatenado
GSM-7 (7-bit)160 caracteres153 caracteres
Binário de 8 bits140 bytes134 bytes
UCS-2 (16-bit)70 caracteres67 caracteres
§03

O que aciona o UCS-2

A codificação é tudo-ou-nada por mensagem: um único caractere fora do GSM-7 força a mensagem inteira para UCS-2, reduzindo a capacidade de 160 para 70. Os culpados comuns são fáceis de introduzir por acidente — um apóstrofo curvo de um processador de texto, um travessão, um emoji ou um nome não latino. Detetá-los antes de enviar é a maior alavanca sobre o custo do SMS.

Caracteres que forçam UCS-2
CategoriaExemplos
Emoji😀 ✅ 🚀 ❤️
Pontuação tipográfica' ' “ ” – — …
Scripts não latinosالعربية · 中文 · Кириллица · עברית · ไทย
Letras acentuadas não presentes no GSM-7â ê î ô û ã õ ą ę ř
§04

A ressalva dos pares de substituição

O UCS-2 é estritamente de 16 bits e cobre o Plano Multilingue Básico do Unicode. Os caracteres acima de U+FFFF — muitos emoji modernos, por exemplo — são representados em UTF-16 como pares de substituição de duas unidades de código de 16 bits, pelo que um único desses emoji consome quatro octetos (dois 'caracteres' UCS-2). Uma mensagem que parece ter um emoji pode, por isso, contar como dois para o limite de 70/67.

Perguntas frequentes

Perguntas frequentes

Quantos caracteres cabem num SMS Unicode?

70 caracteres numa mensagem UCS-2 única e 67 por segmento quando a mensagem é concatenada. Isto porque cada caractere tem 16 bits (dois octetos) contra o limite de 140 octetos de conteúdo do SMS.

O que faz um SMS mudar para UCS-2?

Qualquer caractere isolado fora do alfabeto GSM-7 — um emoji, uma aspa curva, um travessão ou texto não latino — força a mensagem inteira para UCS-2. A codificação é escolhida por mensagem, não por caractere.

O UCS-2 é o mesmo que UTF-16?

Quase. O UCS-2 é de 16 bits fixos e cobre o Plano Multilingue Básico. O SMS trata o conteúdo como UTF-16 big-endian, pelo que os caracteres acima de U+FFFF (muitos emoji) tornam-se pares de substituição e ocupam quatro octetos.

Porque é que um emoji às vezes conta como dois caracteres?

Os emoji acima de U+FFFF são codificados como pares de substituição UTF-16 — duas unidades de código de 16 bits — pelo que um único glifo consome dois dos 70 (ou 67) lugares de caractere UCS-2 disponíveis.

Como evito enviar UCS-2 acidentalmente?

Higienize a entrada antes de enviar: substitua aspas e travessões tipográficos pelos seus equivalentes ASCII, remova ou translitere acentos avulsos e verifique se há emoji. Um verificador GSM-7/Unicode assinala os caracteres exatos que forçam o UCS-2.

Referências

Especificações de origem

Os padrões publicados nos quais esta página se baseia. Abre num novo separador.

BNMantido pela equipa de engenharia BroadNet·Mensagens de nível de operadora desde 2003
Coloque-o no fio.

Construa com uma vinculação SMPP real e uma API REST.

Solicite acesso de teste com chaves de teste reais: envie primeiro para o seu próprio número verificado e, em seguida, passe para o ambiente de produção em mais de 200 países assim que a sua identidade de remetente e rotas forem aprovadas.