Vai al contenuto
Encoder PDU

Encoder PDU online per messaggi SMS-SUBMIT

Trasforma un messaggio nella stringa esadecimale che un modem GSM attende in modalità PDU. L'encoder impacchetta i settetti GSM-7, passa a UCS-2 quando serve e aggiunge un UDH quando il messaggio richiede più parti.

Gira nel browserNessun accountGSM-7 e UCS-2

Comporre un PDU SMS-SUBMIT

Il modulo si apre con un esempio. Cambia testo, numero e parametri e premi «Codifica». Il risultato è generato dal JavaScript di questa pagina sul tuo dispositivo.

Encoder PDU

Nessuna rete necessaria

In GSM-7 un messaggio contiene 160 settetti. Basta un carattere fuori dall'alfabeto GSM perché l'intero messaggio diventi UCS-2.

Se il numero non inizia con + si usa il formato nazionale (0x81); con + quello internazionale (0x91).

Con 0 il campo non viene incluso. Lo strumento limita la validità a 8760 ore (circa un anno).

0–255 è un riferimento a 8 bit, 256–65535 a 16 bit.

Opzioni del report

ParteUDHTesto di questa parte

Ogni blocco inizia con la riga ----- PDU n/total -----. In modalità PDU invia separatamente la stringa esadecimale di ogni blocco.

Niente di ciò che inserisci viene inviato altrove. Funziona anche da un file locale o da una copia offline del sito.

Che cos'è la modalità PDU

La modalità PDU passa al modem l'intero frame del protocollo, non una semplice stringa.

Un SMS non è solo testo. Attorno al messaggio ci sono indirizzo del centro servizi, destinatario, indicatore di codifica, validità e lunghezza. In modalità testo (AT+CMGF=1) è il modem a riempire questi campi e a mostrare solo la parte leggibile. In modalità PDU (AT+CMGF=0) l'intero frame è specificato in esadecimale, quindi ogni campo è sotto il tuo controllo.

Il frame è definito da 3GPP TS 23.040; alfabeto e packing a 7 bit da TS 23.038. L'encoder segue entrambi: rimuove i non numeri dal numero, inverte le coppie BCD, imposta l'ottetto del tipo di indirizzo, sceglie GSM-7 o UCS-2, impacchetta i settetti in ordine e aggiunge l'indicatore dell'header quando il messaggio è diviso.

Perché il testo sembra strano.I caratteri a 7 bit vengono stipati in ottetti a 8 bit, quindi un settetto può a cavallo di due byte. Un PDU GSM-7 non è una sequenza di byte per carattere e si rompe facilmente se modificato a mano.

Perché conta il primo ottetto.L'ottetto dopo il centro servizi trasporta tipo di messaggio, richiesta di report e indicatore di concatenazione. L'encoder parte da 0x01 e aggiunge 0x40 per la concatenazione, 0x10 con la validità e 0x20 con la richiesta di report.

Struttura dei campi SMS-SUBMIT

Leggendo il risultato da sinistra, i campi compaiono in questo ordine.

CampoOttettiCosa trasportaValore scritto dall'encoder
SCA1 + nIndirizzo del centro servizi e ottetto del tipo di indirizzo00 se vuoto; altrimenti ottetto di lunghezza, tipo di indirizzo e cifre BCD
Primo ottetto1Tipo di messaggio, formato di validità, richiesta di report, indicatore dell'header01 per SMS-SUBMIT, più 40, 10, 20 quando servono
MR1Riferimento del messaggio incrementato dal dispositivoRiferimento di concatenazione troncato a 1 ottetto; 00 se non impostato
Destinatario2 + nLunghezza del numero, tipo di indirizzo, cifre BCD81 per numeri nazionali, 91 se l'input inizia con +
PID1Identificatore di protocollo00, messaggio breve ordinario
DCS1Alfabeto e classe del messaggioGSM-7 00, UCS-2 08, SMS flash 10 o 18
VP0, 1, 7Validità: relativa, estesa, assolutaOmesso con 0 ore; altrimenti un ottetto relativo la cui scala cresce con il range (5 min, 30 min, 1 giorno, 1 settimana)
UDL1Lunghezza dei dati utenteNumero di settetti in GSM-7 (UDH compreso), numero di ottetti in UCS-2
UDnUDH facoltativo e testo impacchettatoUDH allineato seguito dal packing a 7 bit, oppure UCS-2 dal byte più significativo

La validità relativa è un ottetto: 0–143 a passi di 5 minuti fino a 12 ore, 144–169 a passi di 30 minuti fino a 24 ore, 170–196 a passi di 1 giorno fino a 30 giorni, 197–255 a passi di 1 settimana oltre, sempre dal momento in cui il centro servizi riceve il messaggio. Lo strumento accetta 0–8760 ore (circa un anno).

GSM-7, UCS-2 e SMS concatenati

Un PDU trasporta 140 ottetti. Quanti caratteri entrano dipende dall'alfabeto e dalla presenza dell'UDH.

CodificaUn PDUCon UDH a 8 bitCon UDH a 16 bit
GSM-7160 settetti153 settetti152 settetti
UCS-270 unità67 unità66 unità

Un UDH da 6 byte occupa 48 bit, arrotondati a 7 settetti in GSM-7. Un riferimento a 16 bit aggiunge un ottetto, cioè uno slot. Per questo il limite di una parte è 153 o 152, non 160.

GSM-7 copre lettere latine, cifre e simboli dell'alfabeto GSM di base. Questi dieci caratteri richiedono due settetti: €, ^, {, }, [, ], ~, |, barra rovesciata e form feed. L'encoder scrive l'escape 1B prima di ciascuno e non spezza mai una coppia tra due parti. Un carattere assente da entrambe le tabelle forza UCS-2: 2 ottetti per carattere e limite a 70.

Esempi decodificati

Questi risultati provengono dal file di test di regressione allegato alla pagina. Gli input sono fissi e le stringhe esadecimali attese sono state ottenute con un'implementazione indipendente di TS 23.038 / TS 23.040.

InputCodificaPDU
Hello SMSDeliverer.com!GSM-7, numero nazionale, senza centro servizi000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700
€GSM-7, carattere esteso000100098121436587F90000029B32
您好,世界!UCS-2000100098121436587F900080C60A8597DFF0C4E16754CFF01

Il file dei test è assets/js/tests/pdu-vectors.json. Contiene anche righe registrate da build precedenti, con i loro vettori segnati come falliti e la descrizione del difetto. Non vengono corretti finché il test non passa.

Quando serve la modalità PDU invece di quella testo

La modalità testo è leggibile. La modalità PDU è l'unico modo per controllare davvero ciò che viene inviato.

Messaggi lunghi

Un SMS concatenato è una serie di PDU legati da un UDH. Parti, ordine e riferimento si vedono solo in modalità PDU.

Integrazione

Se costruisci un gateway, un banco di prove o una coda che passa frame ad AT+CMGS, ti servono ottetti esatti, non l'interpretazione di una stringa da parte del modem.

Diagnosi

Testo illeggibile, accenti spariti e divisioni rotte sono spesso un DCS errato o un UDH danneggiato. Entrambi si vedono qui.

Le due modalità arrivano alla stessa rete e costano uguale. Cambia dove si compone il frame: dentro il modem o in un programma che puoi verificare. Se devi mettere nel messaggio un alfabeto specifico, una validità o una richiesta di report, la modalità PDU è la strada più corta. La modalità testo resta per i controlli rapidi e il decoder di questo sito legge qualsiasi frame ricevuto.

Ti serve l'automazione

Questa pagina è uno strumento di consultazione. SMS Deliverer fa la stessa elaborazione per ogni messaggio in coda.

L'app Windows divide i messaggi lunghi, sceglie GSM-7 o UCS-2, imposta il riferimento UDH, ripete le parti fallite e salva i report di consegna accanto al contatto. Lo stesso percorso di codifica vale per un messaggio o per migliaia, e l'invio lo fanno le SIM dei tuoi modem.

La spiegazione del modem GSM copre l'hardware; la pagina del software Windows descrive invio e report. Il decoder PDU legge i frame estratti dal modem o dal telefono.

Cosa contiene il risultato dell'encoder

  • Packing GSM-7 e coppie dei caratteri estesi
  • UCS-2 con coppie surrogate preservate
  • Riferimenti di concatenazione a 8 e 16 bit
  • Destinatari in formato nazionale e internazionale
  • Validità relativa e classe flash

Verificato 2026-11. La prova gratuita permette di provare l'intero percorso di invio. Questo strumento non richiede licenza né installazione.

Domande frequenti dei clienti

L'encoder è gratuito? Serve un account?

È gratuito e non serve alcun account. La pagina è fatta solo di HTML e JavaScript e funziona anche da una copia offline del sito.

Perché il PDU inizia con 00?

Il primo ottetto è la lunghezza dell'indirizzo del centro servizi. 00 significa che il PDU non contiene il centro servizi e il dispositivo o il modem usano il valore scritto nella SIM. Inserisci il numero del centro servizi se vuoi includerlo nel frame.

Perché un messaggio lungo produce più PDU?

Un PDU contiene 140 ottetti. In GSM-7 sono 160 settetti, 153 con un UDH da 6 byte; in UCS-2 70 unità, 67 con lo stesso header. Il testo si divide sui confini dei caratteri e ogni parte riceve un numero d'ordine.

Posso inviare il risultato con AT+CMGS?

Sì. Metti il modem in modalità PDU con AT+CMGF=0 e passa il numero di ottetti del frame dopo il campo del centro servizi. Invia una parte alla volta nell'ordine. Il dispositivo ricompone le parti con il riferimento e il numero d'ordine dell'UDH.