BroadNet
Codificación de SMSCodificación de datos

El esquema de codificación de datos (DCS)

Actualizado el 3 min de lecturaBasado en estándares
Respuesta directa

El esquema de codificación de datos (DCS) es un campo de un octeto —data_coding en SMPP, TP-DCS en GSM— que indica a la red cómo se codifica el cuerpo del mensaje y, opcionalmente, su clase de mensaje. Los tres valores que importan son 0x00 (GSM-7 por defecto), 0x04 (binario de 8 bits) y 0x08 (UCS-2/Unicode). Los grupos de codificación superiores añaden comportamiento de clase de mensaje y flash.

§01

Los tres valores que usas a diario

Para casi todo el tráfico de texto A2P, el DCS es uno de tres valores. 0x00 selecciona el alfabeto por defecto GSM-7. 0x04 selecciona binario de 8 bits (usado para OTA, WAP push y otras cargas de datos, no texto humano). 0x08 selecciona UCS-2 para Unicode. Fijar el valor equivocado provoca mojibake y mala segmentación, así que debe coincidir con cómo codificaste realmente short_message.

Valores comunes de data_coding / DCS
ValorCodificaciónUsar
0x00Alfabeto predeterminado GSM-7SMS de texto latino estándar
0x01IA5 / ASCIIRara vez usado
0x03Latin-1 (ISO-8859-1)Algunas rutas de Europa Occidental
0x04Binario de 8 bitsCargas útiles binarias / OTA / WAP push
0x08UCS-2 (UTF-16BE)Unicode / no latinos / emoji
§02

Los grupos de codificación de GSM 03.38

El octeto DCS no es una enumeración plana: su nibble alto selecciona un grupo de codificación que reinterpreta los bits bajos. El grupo general de codificación de datos (0x0X) transporta un indicador de alfabeto (bits 3-2: 00 = GSM-7, 01 = 8 bits, 10 = UCS-2) y una bandera opcional de compresión y clase. El grupo de codificación de datos/clase de mensaje (0xFX) se usa para mensajes «flash» de visualización inmediata.

Estructura del grupo de codificación DCS (selección)
Nibble altoGrupoSignificado de los bits bajos
0x0XCodificación general de datosAlfabeto (GSM-7/8 bits/UCS-2), compresión, indicador de clase
0x1XGeneral, clase presenteComo se indicó anteriormente, con la clase de mensaje en los bits 1-0
0xCXMensaje en espera — descartarGrupos de correo de voz/indicadores
0xDX / 0xEXMensaje en espera — almacenarGrupos de indicadores GSM-7 / UCS-2
0xFXCodificación de datos / clase de mensajeAlfabeto en el bit 2, clase en los bits 1-0 (flash = clase 0)
§03

Clases de mensaje

Cuando el DCS indica una clase de mensaje, los bits 1-0 seleccionan dónde llega el mensaje. La clase 0 es un SMS «flash» que se muestra de inmediato en pantalla sin almacenarse. La clase 1 se dirige al terminal (ME), la clase 2 a la SIM (SIM Toolkit / OTA) y la clase 3 a un equipo terminal externo. La mayoría del texto A2P no lleva clase; el flash (clase 0, p. ej. DCS 0xF0 para GSM-7) se usa para alertas que deben aparecer al instante.

Clases de mensaje SMS
ClaseDestinoComportamiento
Class 0PantallaFlash: se muestra inmediatamente, no se guarda automáticamente
Class 1Equipo móvil (ME)Almacenado en la memoria del terminal
Class 2SIMSIM Toolkit / aprovisionamiento OTA
Class 3Equipo terminal (TE)Enviado a equipo externo
Preguntas frecuentes

Preguntas frecuentes

¿Qué es el esquema de codificación de datos en SMS?

Es un campo de un octeto (data_coding en SMPP, TP-DCS en GSM) que indica a la red cómo se codifica el cuerpo del mensaje —GSM-7, 8 bits o UCS-2— y, opcionalmente, su clase de mensaje. Debe coincidir con cómo se codificó realmente la carga.

¿Qué valor de data_coding uso para GSM-7 frente a Unicode?

Usa 0x00 para texto del alfabeto por defecto GSM-7 y 0x08 para Unicode UCS-2. Usa 0x04 solo para cargas binarias de 8 bits como OTA o WAP push, nunca para texto legible por humanos.

¿Qué es un SMS flash?

Un SMS flash es un mensaje de clase 0 que aparece de inmediato en la pantalla del destinatario sin guardarse en la bandeja de entrada. Se fija mediante los bits de clase de mensaje del DCS (por ejemplo, 0xF0 para flash GSM-7).

¿Por qué llegó mi mensaje con caracteres ilegibles?

Casi siempre es un desajuste de DCS: el valor de data_coding no coincidía con la codificación real de short_message. Por ejemplo, enviar bytes UTF-16 con data_coding 0x00 (GSM-7) produce mojibake. Ajusta data_coding para que coincida con los bytes que envías.

Referencias

Especificaciones de la fuente

Las normas publicadas en las que se basa esta página. Se abre en una pestaña nueva.

BNMantenido por el equipo de ingeniería BroadNet·Mensajería de nivel empresarial desde 2003.
Colócalo en el cable

Desarrollado con un enlace SMPP real y una API REST.

Solicita acceso de prueba con claves de prueba reales: primero envía a tu propio número verificado y, una vez aprobada tu identidad de remitente y las rutas, pasa a producción en más de 200 países.