# El esquema de codificación de datos (DCS)

> 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.

- URL canónica: https://www.broadnet.me/es/reference/data-coding-scheme-dcs
- Idioma: es
- Última actualización: 2026-07-18
- Editor: BroadNet (https://www.broadnet.me)

El byte del esquema de codificación de datos que indica a la red cómo se codifica un SMS: GSM-7 (0x00), 8 bits (0x04), UCS-2 (0x08), además de las clases de mensaje (0/flash a 3/SIM) de GSM 03.38.

## 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*

| 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.

*Estructura del grupo de codificación DCS (selección)*

| 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.

*Clases de mensaje SMS*

| 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.

## Fuentes

- [3GPP TS 23.038 — data coding scheme (§4)](https://www.3gpp.org/dynareport/23038.htm)
- [SMPP v3.4 specification — data_coding](https://smpp.org/SMPP_v3_4_Issue1_2.pdf)

## Relacionado

- [El conjunto de caracteres GSM-7](https://www.broadnet.me/es/reference/gsm7-character-set)
- [SMS UCS-2 y Unicode](https://www.broadnet.me/es/reference/ucs2-unicode-sms)
- [Referencia SMPP submit_sm](https://www.broadnet.me/es/reference/smpp-submit-sm)
- [Calculadora de segmentos SMS (herramienta gratuita)](https://www.broadnet.me/es/tools/sms-segment-calculator)
- [Producto A2P SMS](https://www.broadnet.me/es/products/a2p-sms)
