Encodeur PDU en ligne pour messages SMS-SUBMIT
Convertissez un message en la chaîne hexadécimale qu'un modem GSM attend en mode PDU. L'encodeur compacte les septets GSM-7, bascule en UCS-2 lorsque c'est nécessaire et ajoute un UDH quand le message exige plus d'une partie.
Encodez un message en un PDU SMS-SUBMIT
Le formulaire part d'un exemple connu. Modifiez le texte, le numéro ou les options, puis cliquez sur Encodez. La sortie est construite par JavaScript sur cette machine.
Encodeur PDU
Hors ligne| Partie | UDH | Texte de cette partie |
|---|
Chaque bloc commence par ----- PDU n/total -----. En mode PDU, envoyez l'hexadécimal de chaque bloc séparément.
Rien de ce que vous saisissez ici n'est envoyé nulle part. La page fonctionne depuis un fichier local ou une copie hors ligne de ce site.
Qu'est-ce que le mode PDU
Le mode PDU remet au modem une trame de protocole complète au lieu d'une simple chaîne.
Un SMS n'est pas que du texte. Autour du message se trouvent une adresse de centre de services, une destination, un marqueur de codage, une période de validité et un champ de longueur. En mode texte (AT+CMGF=1), le modem remplit ces champs pour vous et n'affiche que la partie lisible. En mode PDU (AT+CMGF=0), vous fournissez la trame entière en hexadécimal, donc chaque champ est sous votre contrôle.
La trame est définie dans la 3GPP TS 23.040. L'alphabet de caractères et son compactage sur 7 bits sont définis dans la TS 23.038. Cet encodeur suit les deux : il retire les caractères non numériques du numéro, convertit les paires restantes en BCD, définit l'octet de type d'adresse, choisit GSM-7 ou UCS-2, compacte les septets dans l'ordre et active l'indicateur d'en-tête de données utilisateur lorsqu'un message est découpé.
Pourquoi le texte paraît étrange. Les caractères de sept bits sont compactés dans des octets de huit bits, donc un septet peut chevaucher deux octets. Un PDU GSM-7 n'est donc pas un octet par caractère, et le modifier à la main casse facilement.
Pourquoi le premier octet compte. L'octet qui suit le centre de services porte le type de message, l'indicateur de rapport de livraison et l'indicateur de concaténation. Cet encodeur écrit 0x01 plus 0x40 pour un message découpé, 0x10 lorsqu'une période de validité est définie et 0x20 lorsque vous demandez un rapport.
Structure des champs du SMS-SUBMIT
En lisant la sortie de gauche à droite, les champs sont :
| Champ | Octets | Ce qu'il transporte | Ce que cet encodeur écrit |
|---|---|---|---|
| SCA | 1 + n | Adresse du centre de services et son octet de type d'adresse | 00 lorsque vous le laissez vide ; sinon l'octet de longueur, le type d'adresse et les chiffres BCD |
| Premier octet | 1 | Type de message, format de validité, demande de rapport, indicateur d'en-tête de données utilisateur | 01 pour SMS-SUBMIT, avec 40, 10 et 20 ajoutés selon les besoins |
| MR | 1 | Référence de message incrémentée par le téléphone | La référence de concaténation, tronquée à un octet ; 00 si elle n'est pas définie |
| Destination | 2 + n | Longueur du numéro, type d'adresse et chiffres BCD | 81 pour un numéro national, 91 lorsque l'entrée commence par + |
| PID | 1 | Identifiant de protocole | 00, un message court normal |
| DCS | 1 | Alphabet et classe du message | 00 GSM-7, 08 UCS-2, 10 ou 18 pour un message flash |
| VP | 0, 1 ou 7 | Période de validité relative, améliorée ou absolue | Omis à 0 heure ; sinon un octet relatif dont le pas augmente avec l'intervalle (5 minutes, demi-heure, jours, semaines) |
| UDL | 1 | Longueur des données utilisateur | Nombre de septets en GSM-7 (l'UDH compte comme des septets), nombre d'octets en UCS-2 |
| UD | n | UDH facultatif plus le texte compacté | Compactage sur 7 bits après un UDH aligné sur un octet, ou UCS-2 big-endian |
La période de validité relative utilise un octet : les valeurs 0–143 comptent des pas de 5 minutes jusqu'à 12 heures, 144–169 des pas d'une demi-heure jusqu'à 24 heures, 170–196 des jours jusqu'à 30 jours et 197–255 des semaines au-delà, tous comptés à partir du moment où le centre de services reçoit le message. Cet outil accepte 0–8760 heures (environ un an).
GSM-7, UCS-2 et SMS concaténés
Un PDU porte 140 octets. Le nombre de caractères qui tiennent dépend de l'alphabet et de la présence ou non d'un UDH.
| Codage | PDU unique | Avec un UDH de 8 bits | Avec un UDH de 16 bits |
|---|---|---|---|
| GSM-7 | 160 septets | 153 septets | 152 septets |
| UCS-2 | 70 unités | 67 unités | 66 unités |
Un UDH de 6 octets occupe 48 bits, arrondis à 7 emplacements de septet en GSM-7 ; une référence de 16 bits ajoute un octet et un emplacement. C'est pourquoi les limites de découpage sont 153 ou 152 plutôt que 160.
GSM-7 couvre les lettres latines, les chiffres et la ponctuation définis par l'alphabet GSM d'origine. Dix caractères exigent deux septets : €, ^, {, }, [, ], ~, |, la barre oblique inverse et le caractère de saut de page. L'encodeur écrit le code d'échappement 1B devant chacun et ne sépare jamais une paire entre deux parties. Tout caractère hors des deux tables force l'UCS-2, où chaque caractère occupe deux octets et la limite tombe à 70.
Exemples résolus
Ces sorties proviennent du fichier de régression livré avec cette page. Les entrées sont inchangées et l'hexadécimal attendu a été produit par une implémentation indépendante de la TS 23.038 / TS 23.040.
| Entrée | Codage | PDU |
|---|---|---|
| Hello SMSDeliverer.com! | GSM-7, numéro national, sans centre de services | 000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700 |
| € | Caractère d'extension GSM-7 | 000100098121436587F90000029B32 |
| 您好,世界! | UCS-2 | 000100098121436587F900080C60A8597DFF0C4E16754CFF01 |
Le registre de tests est assets/js/tests/pdu-vectors.json. Il conserve aussi une chaîne enregistrée par une ancienne build ; ce vecteur est marqué comme défaillant avec ses défauts écrits, et n'est pas modifié avant de passer.
Quand utiliser PDU plutôt que le mode texte
Le mode texte est plus facile à lire. Le mode PDU est le seul moyen de contrôler ce qui est réellement envoyé.
Messages longs
Un SMS concaténé est plusieurs PDU reliés par un UDH. Les parties, leur ordre et le numéro de référence n'apparaissent qu'en mode PDU.
Travail d'intégration
Si vous construisez une passerelle, un banc de tests ou une file qui remet des trames à AT+CMGS, il vous faut les octets exacts et non l'interprétation qu'un modem fait d'une chaîne.
Diagnostic
Un texte brouillé, des accents manquants et des messages découpés viennent souvent d'un DCS erroné ou d'un UDH cassé. Les deux sont visibles ici.
Les deux modes atteignent le même réseau et sont facturés de la même façon. La différence est l'endroit où la trame est assemblée : dans le modem, ou dans un logiciel que vous pouvez inspecter. Lorsqu'un message doit porter un alphabet précis, une période de validité ou une demande de rapport de livraison, le mode PDU est le chemin le plus court. Le mode texte garde sa place pour un test manuel rapide, et le décodeur de ce site sait lire l'une ou l'autre trame à l'arrivée.
Besoin d'une solution automatisée ?
Cette page est un outil de référence. SMS Deliverer fait le même travail pour chaque message d'une file.
L'application Windows découpe les messages longs, choisit GSM-7 ou UCS-2, définit une référence UDH, réessaie les parties en échec et conserve le rapport de livraison avec le contact. Le même chemin de codage sert que vous envoyiez un message ou quelques milliers, et les cartes SIM de vos propres modems portent le trafic.
Le guide du modem GSM explique le volet matériel, la page du logiciel de bureau liste les fonctions d'envoi et de rapport, et le décodeur PDU lit les trames capturées depuis un modem ou un téléphone.
Inclus dans la sortie de l'encodeur
- Compactage des septets GSM-7 et paires d'extension
- UCS-2 avec paires de substitution intactes
- Références de concaténation de 8 et 16 bits
- Formats de destination national et international
- Période de validité relative et classe flash
Révisé en 2026-11. Un essai gratuit couvre le chemin d'envoi de bout en bout ; cet outil ne demande ni licence ni installation.
Questions fréquentes avant achat
Cet encodeur est-il gratuit et faut-il un compte ?
Il est gratuit et ne demande aucun compte. La page est en HTML et JavaScript simple, et fonctionne aussi depuis une copie hors ligne du site.
Pourquoi mon PDU commence-t-il par 00 ?
Le premier octet est la longueur de l'adresse du centre de services. 00 signifie que le PDU ne porte aucun centre de services, donc le téléphone ou le modem utilise celui enregistré sur la SIM. Indiquez un numéro de centre de services si vous voulez qu'il soit écrit dans la trame.
Pourquoi un message long est-il devenu plusieurs PDU ?
Un PDU contient 140 octets. GSM-7 tient 160 septets, ou 153 avec un UDH de 6 octets ; UCS-2 tient 70, ou 67 avec le même en-tête. Le texte est découpé sur une limite de caractère et chaque partie reçoit un numéro de séquence.
Puis-je envoyer la sortie avec AT+CMGS ?
Oui. Placez le modem en mode PDU avec AT+CMGF=0, puis passez le nombre d'octets de la trame après le champ du centre de services. Envoyez une partie à la fois et gardez l'ordre, car le téléphone réassemble les parties par la référence UDH et la séquence.