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.
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.
| Valor | Codificación | Usar |
|---|---|---|
| 0x00 | Alfabeto predeterminado GSM-7 | SMS de texto latino estándar |
| 0x01 | IA5 / ASCII | Rara vez usado |
| 0x03 | Latin-1 (ISO-8859-1) | Algunas rutas de Europa Occidental |
| 0x04 | Binario de 8 bits | Cargas útiles binarias / OTA / WAP push |
| 0x08 | UCS-2 (UTF-16BE) | Unicode / no latinos / emoji |
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.
| Nibble alto | Grupo | Significado de los bits bajos |
|---|---|---|
| 0x0X | Codificación general de datos | Alfabeto (GSM-7/8 bits/UCS-2), compresión, indicador de clase |
| 0x1X | General, clase presente | Como se indicó anteriormente, con la clase de mensaje en los bits 1-0 |
| 0xCX | Mensaje en espera — descartar | Grupos de correo de voz/indicadores |
| 0xDX / 0xEX | Mensaje en espera — almacenar | Grupos de indicadores GSM-7 / UCS-2 |
| 0xFX | Codificación de datos / clase de mensaje | Alfabeto en el bit 2, clase en los bits 1-0 (flash = clase 0) |
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.
| Clase | Destino | Comportamiento |
|---|---|---|
| Class 0 | Pantalla | Flash: se muestra inmediatamente, no se guarda automáticamente |
| Class 1 | Equipo móvil (ME) | Almacenado en la memoria del terminal |
| Class 2 | SIM | SIM Toolkit / aprovisionamiento OTA |
| Class 3 | Equipo terminal (TE) | Enviado a equipo externo |
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.
Especificaciones de la fuente
Las normas publicadas en las que se basa esta página. Se abre en una pestaña nueva.