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.
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| Parte | UDH | Testo 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.
| Campo | Ottetti | Cosa trasporta | Valore scritto dall'encoder |
|---|---|---|---|
| SCA | 1 + n | Indirizzo del centro servizi e ottetto del tipo di indirizzo | 00 se vuoto; altrimenti ottetto di lunghezza, tipo di indirizzo e cifre BCD |
| Primo ottetto | 1 | Tipo di messaggio, formato di validità, richiesta di report, indicatore dell'header | 01 per SMS-SUBMIT, più 40, 10, 20 quando servono |
| MR | 1 | Riferimento del messaggio incrementato dal dispositivo | Riferimento di concatenazione troncato a 1 ottetto; 00 se non impostato |
| Destinatario | 2 + n | Lunghezza del numero, tipo di indirizzo, cifre BCD | 81 per numeri nazionali, 91 se l'input inizia con + |
| PID | 1 | Identificatore di protocollo | 00, messaggio breve ordinario |
| DCS | 1 | Alfabeto e classe del messaggio | GSM-7 00, UCS-2 08, SMS flash 10 o 18 |
| VP | 0, 1, 7 | Validità: relativa, estesa, assoluta | Omesso con 0 ore; altrimenti un ottetto relativo la cui scala cresce con il range (5 min, 30 min, 1 giorno, 1 settimana) |
| UDL | 1 | Lunghezza dei dati utente | Numero di settetti in GSM-7 (UDH compreso), numero di ottetti in UCS-2 |
| UD | n | UDH facoltativo e testo impacchettato | UDH 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.
| Codifica | Un PDU | Con UDH a 8 bit | Con UDH a 16 bit |
|---|---|---|---|
| GSM-7 | 160 settetti | 153 settetti | 152 settetti |
| UCS-2 | 70 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.
| Input | Codifica | PDU |
|---|---|---|
| Hello SMSDeliverer.com! | GSM-7, numero nazionale, senza centro servizi | 000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700 |
| € | GSM-7, carattere esteso | 000100098121436587F90000029B32 |
| 您好,世界! | UCS-2 | 000100098121436587F900080C60A8597DFF0C4E16754CFF01 |
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.