Saltar al contenido
Codificador PDU

Codificador PDU online para mensajes SMS-SUBMIT

Convierte un mensaje en la cadena hexadecimal que un modem GSM espera en modo PDU. El codificador empaqueta séptets GSM-7, cambia a UCS-2 cuando hace falta y añade un UDH cuando el mensaje necesita más de una parte.

Funciona en este navegadorSin cuentaGSM-7 y UCS-2

Codifica un mensaje en un PDU SMS-SUBMIT

El formulario empieza con un ejemplo conocido. Cambia el texto, el número o las opciones y pulsa Codificar. La salida la construye JavaScript en esta máquina.

Codificador PDU

Sin conexión

GSM-7 admite 160 séptets en un SMS. Un carácter fuera del alfabeto GSM pasa todo el mensaje a UCS-2.

Nacional (0x81) salvo que el número empiece por +, lo que selecciona internacional (0x91).

0 deja el campo fuera. La herramienta lo limita a 8760 horas (aproximadamente un año).

0–255 usa una referencia de 8 bits; 256–65535 usa una referencia de 16 bits.

Opciones de informe

ParteUDHTexto en esta parte

Cada bloque empieza por ----- PDU n/total -----. En modo PDU, envía el hexadecimal de cada bloque por separado.

Nada de lo que escribes aquí se envía a ningún sitio. La página funciona desde un archivo local o desde una copia sin conexión de este sitio.

Qué es el modo PDU

El modo PDU entrega al modem una trama de protocolo completa en lugar de una cadena simple.

Un SMS no es solo texto. Alrededor del mensaje hay una dirección de centro de servicio, un destino, un marcador de codificación, un periodo de validez y un campo de longitud. En modo texto (AT+CMGF=1) el modem los rellena por ti y muestra solo la parte legible. En modo PDU (AT+CMGF=0) aportas la trama completa en hexadecimal, así que todos los campos quedan bajo tu control.

La trama está definida en 3GPP TS 23.040. El alfabeto de caracteres y su empaquetado de 7 bits están definidos en TS 23.038. Este codificador sigue ambas: quita los caracteres que no son dígitos del número, intercambia los pares restantes a BCD, fija el octeto de tipo de dirección, selecciona GSM-7 o UCS-2, empaqueta los séptets en orden y activa el indicador de cabecera de datos de usuario cuando un mensaje se divide.

Por qué el texto parece raro. Los caracteres de siete bits se empaquetan en octetos de ocho, así que un séptet puede cruzar dos bytes. Un PDU GSM-7 no es por tanto un volcado de un byte por carácter, y editarlo a mano se rompe con facilidad.

Por qué importa el primer octeto. El octeto que sigue al centro de servicio lleva el tipo de mensaje, el indicador de informe de entrega y el indicador de concatenación. Este codificador escribe 0x01 más 0x40 para un mensaje dividido, 0x10 cuando hay un periodo de validez y 0x20 cuando solicitas un informe.

Estructura de campos de SMS-SUBMIT

Leyendo la salida de izquierda a derecha, los campos son:

CampoOctetosQué llevaQué escribe este codificador
SCA1 + nDirección del centro de servicio y su octeto de tipo de dirección00 cuando lo dejas vacío; si no, el octeto de longitud, el tipo de dirección y los dígitos BCD
Primer octeto1Tipo de mensaje, formato de validez, solicitud de informe, indicador de cabecera de datos de usuario01 para SMS-SUBMIT, con 40, 10 y 20 añadidos según haga falta
MR1Referencia de mensaje que incrementa el teléfonoLa referencia de concatenación, truncada a un octeto; 00 cuando no se fija
Destino2 + nLongitud del número, tipo de dirección y dígitos BCD81 para un número nacional, 91 cuando la entrada empieza por +
PID1Identificador de protocolo00, un mensaje corto normal
DCS1Alfabeto y clase de mensaje00 GSM-7, 08 UCS-2, 10 o 18 para un mensaje flash
VP0, 1 o 7Periodo de validez relativo, mejorado o absolutoSe omite a 0 horas; si no, un octeto relativo cuyo paso crece con el rango (5 minutos, media hora, días, semanas)
UDL1Longitud de los datos de usuarioNúmero de séptets en GSM-7 (el UDH cuenta como séptets), número de octetos en UCS-2
UDnUDH opcional más el texto empaquetadoEmpaquetado de 7 bits tras un UDH alineado a byte, o UCS-2 big-endian

El periodo de validez relativo usa un octeto: los valores 0–143 cuentan pasos de 5 minutos hasta 12 horas, 144–169 pasos de media hora hasta 24 horas, 170–196 días hasta 30 días y 197–255 semanas más allá, todos contados desde el momento en que el centro de servicio recibe el mensaje. Esta herramienta admite 0–8760 horas (aproximadamente un año).

GSM-7, UCS-2 y SMS concatenados

Un PDU lleva 140 octetos. Cuántos caracteres caben depende del alfabeto y de si hay un UDH.

CodificaciónPDU únicoCon UDH de 8 bitsCon UDH de 16 bits
GSM-7160 séptets153 séptets152 séptets
UCS-270 unidades67 unidades66 unidades

Un UDH de 6 bytes ocupa 48 bits, que se redondean a 7 ranuras de séptet en GSM-7; una referencia de 16 bits añade un octeto más y una ranura más. Por eso los límites de división son 153 o 152 en lugar de 160.

GSM-7 cubre las letras latinas, los dígitos y la puntuación que define el alfabeto GSM original. Diez caracteres necesitan dos séptets: €, ^, {, }, [, ], ~, |, la barra invertida y el carácter de salto de página. El codificador escribe el código de escape 1B delante de cada uno y nunca divide un par entre dos partes. Cualquier carácter fuera de ambas tablas fuerza UCS-2, donde cada carácter ocupa dos octetos y el límite baja a 70.

Ejemplos resueltos

Estas salidas vienen del archivo de regresión que acompaña esta página. Las entradas no cambian y el hexadecimal esperado lo produjo una implementación independiente de TS 23.038 / TS 23.040.

EntradaCodificaciónPDU
Hello SMSDeliverer.com!GSM-7, número nacional, sin centro de servicio000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700
€Carácter de extensión GSM-7000100098121436587F90000029B32
您好,世界!UCS-2000100098121436587F900080C60A8597DFF0C4E16754CFF01

El registro de pruebas es assets/js/tests/pdu-vectors.json. También conserva una cadena grabada de una build antigua; ese vector está marcado como fallido con sus defectos escritos, y no se edita hasta que pase.

Cuándo usar PDU en lugar del modo texto

El modo texto es más fácil de leer. El modo PDU es la única forma de controlar lo que se envía realmente.

Mensajes largos

Un SMS concatenado son varios PDUs unidos por un UDH. Las partes, su orden y el número de referencia solo se ven en modo PDU.

Trabajo de integración

Si construyes una pasarela, un banco de pruebas o una cola que entrega tramas a AT+CMGS, necesitas los octetos exactos y no la interpretación que un modem hace de una cadena.

Diagnóstico

El texto corrupto, los acentos que faltan y los mensajes divididos suelen venir de un DCS erróneo o de un UDH roto. Ambos se ven aquí.

Ambos modos llegan a la misma red y se facturan igual. La diferencia está en dónde se monta la trama: dentro del modem o en software que puedes inspeccionar. Cuando un mensaje debe llevar un alfabeto concreto, un periodo de validez o una solicitud de informe de entrega, el modo PDU es el camino más corto. El modo texto sigue teniendo su sitio para una prueba manual rápida, y el decodificador de este sitio puede leer cualquiera de las dos tramas cuando llegue.

¿Necesitas una solución automatizada?

Esta página es una herramienta de referencia. SMS Deliverer hace el mismo trabajo para cada mensaje de una cola.

La aplicación para Windows divide los mensajes largos, elige GSM-7 o UCS-2, fija una referencia de UDH, reintenta las partes fallidas y guarda el informe de entrega junto al contacto. La misma ruta de codificación se usa tanto si envías un mensaje como unos miles, y las tarjetas SIM de tus propios modems llevan el tráfico.

La guía del modem GSM explica el lado del hardware, la página del software de escritorio enumera las funciones de envío e informes, y el decodificador PDU lee tramas capturadas de un modem o un teléfono.

Incluido en la salida del codificador

  • Empaquetado de séptets GSM-7 y pares de extensión
  • UCS-2 con pares suplentes intactos
  • Referencias de concatenación de 8 y 16 bits
  • Formatos de destino nacional e internacional
  • Periodo de validez relativo y clase flash

Revisado en 2026-11. Una prueba gratis cubre la ruta de envío de principio a fin; esta herramienta no necesita licencia ni instalación.

Preguntas frecuentes antes de comprar

¿Este codificador es gratis y necesita cuenta?

Es gratis y no necesita cuenta. La página es HTML y JavaScript simples, y también funciona desde una copia sin conexión del sitio.

¿Por qué mi PDU empieza por 00?

El primer octeto es la longitud de la dirección del centro de servicio. 00 significa que el PDU no lleva centro de servicio, así que el teléfono o el modem usan el que está guardado en la SIM. Escribe un número de centro de servicio si quieres que se grabe en la trama.

¿Por qué un mensaje largo se convirtió en varios PDUs?

Un PDU contiene 140 octetos. GSM-7 admite 160 séptets, o 153 cuando hay un UDH de 6 bytes; UCS-2 admite 70, o 67 con la misma cabecera. El texto se divide en un límite de carácter y cada parte recibe un número de secuencia.

¿Puedo enviar la salida con AT+CMGS?

Sí. Pon el modem en modo PDU con AT+CMGF=0 y pasa el número de octetos de la trama después del campo del centro de servicio. Envía una parte a la vez y mantén el orden, porque el teléfono vuelve a unir las partes por la referencia del UDH y la secuencia.