BroadNet
Codificação SMSCodificação de dados

O data coding scheme (DCS)

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

O data coding scheme (DCS) é um campo de um octeto — data_coding no SMPP, TP-DCS no GSM — que indica à rede como o corpo da mensagem está codificado e, opcionalmente, a sua classe de mensagem. Os três valores que importam são 0x00 (predefinição GSM-7), 0x04 (binário de 8 bits) e 0x08 (UCS-2/Unicode). Grupos de codificação superiores acrescentam comportamento de classe de mensagem e flash.

§01

Os três valores que usa diariamente

Para quase todo o tráfego de texto A2P, o DCS é um de três valores. 0x00 seleciona o alfabeto predefinido GSM-7. 0x04 seleciona binário de 8 bits (usado para OTA, WAP push e outros conteúdos de dados, não texto humano). 0x08 seleciona UCS-2 para Unicode. Definir o valor errado causa mojibake e má segmentação, por isso tem de corresponder a como codificou realmente o short_message.

Valores comuns de data_coding / DCS
ValorCodificaçãoUsar
0x00Alfabeto padrão GSM-7SMS padrão com texto em alfabeto latino
0x01IA5 / ASCIIRaramente usado
0x03Latin-1 (ISO-8859-1)Algumas rotas da Europa Ocidental
0x04Binário de 8 bitsPayloads binários / OTA / WAP push
0x08UCS-2 (UTF-16BE)Unicode / não latino / emoji
§02

Os grupos de codificação da GSM 03.38

O octeto DCS não é uma enumeração plana — o seu nibble superior seleciona um grupo de codificação que reinterpreta os bits inferiores. O grupo de codificação de dados geral (0x0X) transporta um indicador de alfabeto (bits 3-2: 00 = GSM-7, 01 = 8-bit, 10 = UCS-2) e uma flag opcional de compressão e classe. O grupo data-coding/classe de mensagem (0xFX) é usado para mensagens 'flash' de exibição imediata.

Estrutura de grupos de codificação do DCS (selecionada)
Nibble altoGrupoSignificado de bits baixos
0x0XCodificação geral de dadosAlfabeto (GSM-7/8 bits/UCS-2), compressão, flag de classe
0x1XGeral, classe presenteComo acima, com a classe de mensagem nos bits 1-0
0xCXMensagem em espera — descartarGrupos de correio de voz/indicadores
0xDX / 0xEXMensagem em espera — armazenarGrupos de indicadores GSM-7 / UCS-2
0xFXCodificação de dados / classe de mensagemAlfabeto no bit 2, classe nos bits 1-0 (flash = classe 0)
§03

Classes de mensagem

Quando o DCS indica uma classe de mensagem, os bits 1-0 selecionam onde a mensagem aterra. A classe 0 é um SMS 'flash' mostrado imediatamente no ecrã sem ser armazenado. A classe 1 dirige-se ao terminal (ME), a classe 2 ao SIM (SIM Toolkit / OTA) e a classe 3 a equipamento terminal externo. A maior parte do texto A2P não transporta classe; o flash (classe 0, por exemplo DCS 0xF0 para GSM-7) é usado para alertas que têm de aparecer instantaneamente.

Classes de mensagem SMS
ClasseDestinoComportamento
Class 0EcrãFlash — exibido imediatamente, não armazenado automaticamente
Class 1Equipamento móvel (ME)Armazenado na memória do aparelho
Class 2SIMSIM Toolkit / aprovisionamento OTA
Class 3Equipamento terminal (TE)Encaminhado para equipamento externo
Perguntas frequentes

Perguntas frequentes

O que é o data coding scheme no SMS?

É um campo de um octeto (data_coding no SMPP, TP-DCS no GSM) que indica à rede como o corpo da mensagem está codificado — GSM-7, 8-bit ou UCS-2 — e opcionalmente a sua classe de mensagem. Tem de corresponder a como o conteúdo foi realmente codificado.

Que valor de data_coding uso para GSM-7 vs Unicode?

Use 0x00 para texto no alfabeto predefinido GSM-7 e 0x08 para UCS-2 Unicode. Use 0x04 apenas para conteúdos binários de 8 bits como OTA ou WAP push, nunca para texto legível por humanos.

O que é um SMS flash?

Um SMS flash é uma mensagem de classe 0 que aparece imediatamente no ecrã do destinatário sem ser guardada na caixa de entrada. É definido através dos bits de classe de mensagem do DCS (por exemplo 0xF0 para flash GSM-7).

Porque é que a minha mensagem chegou com caracteres ilegíveis?

Quase sempre uma incompatibilidade de DCS: o valor de data_coding não correspondeu à codificação real do short_message. Por exemplo, enviar bytes UTF-16 com data_coding 0x00 (GSM-7) produz mojibake. Defina o data_coding para corresponder aos bytes que envia.

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.