Aller au contenu
Encodeur PDU

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.

Fonctionne dans ce navigateurSans compteGSM-7 et UCS-2

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

GSM-7 tient 160 septets dans un SMS. Un caractère hors de l'alphabet GSM fait basculer tout le message en UCS-2.

National (0x81) sauf si le numéro commence par +, ce qui sélectionne l'international (0x91).

0 omet le champ. L'outil le plafonne à 8760 heures (environ un an).

0–255 utilise une référence de 8 bits ; 256–65535 une référence de 16 bits.

Options de rapport

PartieUDHTexte 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 :

ChampOctetsCe qu'il transporteCe que cet encodeur écrit
SCA1 + nAdresse du centre de services et son octet de type d'adresse00 lorsque vous le laissez vide ; sinon l'octet de longueur, le type d'adresse et les chiffres BCD
Premier octet1Type de message, format de validité, demande de rapport, indicateur d'en-tête de données utilisateur01 pour SMS-SUBMIT, avec 40, 10 et 20 ajoutés selon les besoins
MR1Référence de message incrémentée par le téléphoneLa référence de concaténation, tronquée à un octet ; 00 si elle n'est pas définie
Destination2 + nLongueur du numéro, type d'adresse et chiffres BCD81 pour un numéro national, 91 lorsque l'entrée commence par +
PID1Identifiant de protocole00, un message court normal
DCS1Alphabet et classe du message00 GSM-7, 08 UCS-2, 10 ou 18 pour un message flash
VP0, 1 ou 7Période de validité relative, améliorée ou absolueOmis à 0 heure ; sinon un octet relatif dont le pas augmente avec l'intervalle (5 minutes, demi-heure, jours, semaines)
UDL1Longueur des données utilisateurNombre de septets en GSM-7 (l'UDH compte comme des septets), nombre d'octets en UCS-2
UDnUDH 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.

CodagePDU uniqueAvec un UDH de 8 bitsAvec un UDH de 16 bits
GSM-7160 septets153 septets152 septets
UCS-270 unités67 unités66 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éeCodagePDU
Hello SMSDeliverer.com!GSM-7, numéro national, sans centre de services000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700
€Caractère d'extension GSM-7000100098121436587F90000029B32
您好,世界!UCS-2000100098121436587F900080C60A8597DFF0C4E16754CFF01

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.