Online-PDU-Encoder für SMS-SUBMIT-Nachrichten
Wandeln Sie eine Nachricht in die Hex-Zeichenkette um, die ein GSM-Modem im PDU-Modus erwartet. Der Encoder packt GSM-7-Septette, wechselt bei Bedarf zu UCS-2 und fügt einen UDH hinzu, wenn die Nachricht mehr als einen Teil braucht.
Eine Nachricht in einen SMS-SUBMIT-PDU umwandeln
Das Formular startet mit einem bekannten Beispiel. Ändern Sie Text, Nummer oder Optionen und klicken Sie dann auf Codieren. Die Ausgabe entsteht per JavaScript auf diesem Rechner.
PDU-Encoder
Offline| Teil | UDH | Text in diesem Teil |
|---|
Jeder Block beginnt mit ----- PDU n/total -----. Im PDU-Modus senden Sie den Hex-Teil jedes Blocks einzeln.
Nichts, was Sie hier eingeben, wird irgendwohin gesendet. Die Seite funktioniert aus einer lokalen Datei oder aus einer Offline-Kopie dieser Website.
Was der PDU-Modus ist
Im PDU-Modus erhält das Modem einen vollständigen Protokollrahmen statt einer einfachen Zeichenkette.
Eine SMS ist nicht nur Text. Um die Nachricht herum stehen eine Service-Center-Adresse, ein Ziel, eine Kodierungsangabe, eine Gültigkeitsdauer und ein Längenfeld. Im Textmodus (AT+CMGF=1) füllt das Modem diese Felder für Sie aus und zeigt nur den lesbaren Teil. Im PDU-Modus (AT+CMGF=0) liefern Sie den ganzen Rahmen in Hexadezimalform, sodass jedes Feld Ihrer Kontrolle unterliegt.
Der Rahmen ist in 3GPP TS 23.040 definiert. Das Zeichenalphabet und seine 7-Bit-Packung stehen in TS 23.038. Dieser Encoder folgt beiden: Er entfernt Nicht-Ziffern aus der Nummer, tauscht die verbleibenden Paare in BCD, setzt das Adresstyp-Oktett, wählt GSM-7 oder UCS-2, packt die Septette in Reihenfolge und setzt den User-Data-Header-Indikator, wenn eine Nachricht geteilt wird.
Warum der Text seltsam aussieht. Sieben-Bit-Zeichen werden in Acht-Bit-Oktette gepackt, deshalb kann ein Septett über zwei Bytes reichen. Ein GSM-7-PDU ist daher kein Zeichen-pro-Byte-Abbild, und Bearbeitung von Hand zerstört ihn leicht.
Warum das erste Oktett zählt. Das Oktett nach dem Service Center trägt den Nachrichtentyp, das Flag für den Zustellbericht und das Flag für Konkatenation. Dieser Encoder schreibt 0x01 plus 0x40 bei einer geteilten Nachricht, 0x10 bei gesetzter Gültigkeitsdauer und 0x20 bei angefordertem Bericht.
Feldstruktur von SMS-SUBMIT
Von links nach rechts gelesen besteht die Ausgabe aus diesen Feldern:
| Feld | Oktette | Was es trägt | Was dieser Encoder schreibt |
|---|---|---|---|
| SCA | 1 + n | Adresse des Service Centers und deren Adresstyp-Oktett | 00 bei leerem Feld, sonst das Längenoktett, der Adresstyp und die BCD-Ziffern |
| Erstes Oktett | 1 | Nachrichtentyp, Gültigkeitsformat, Berichtsanforderung, User-Data-Header-Flag | 01 für SMS-SUBMIT, bei Bedarf plus 40, 10 und 20 |
| MR | 1 | Vom Endgerät hochgezählte Nachrichtenreferenz | Die Konkatenationsreferenz, auf ein Oktett gekürzt; 00, wenn nicht gesetzt |
| Ziel | 2 + n | Nummernlänge, Adresstyp und BCD-Ziffern | 81 für eine nationale Nummer, 91, wenn die Eingabe mit + beginnt |
| PID | 1 | Protokollkennung | 00, eine normale Kurznachricht |
| DCS | 1 | Alphabet und Nachrichtenklasse | 00 für GSM-7, 08 für UCS-2, 10 oder 18 für eine Flash-Nachricht |
| VP | 0, 1 oder 7 | Gültigkeitsdauer: relativ, erweitert oder absolut | Bei 0 Stunden weggelassen; sonst ein relatives Oktett, dessen Schrittweite mit dem Bereich wächst (5 Minuten, halbe Stunde, Tag, Woche) |
| UDL | 1 | Länge der Nutzdaten | Septettanzahl bei GSM-7 (der UDH zählt als Septette), Oktettanzahl bei UCS-2 |
| UD | n | Optionaler UDH plus der gepackte Text | 7-Bit-gepackt nach einem byte-ausgerichteten UDH, oder UCS-2 in Big-Endian |
Die relative Gültigkeitsdauer nutzt ein Oktett: Werte 0–143 zählen 5-Minuten-Schritte bis 12 Stunden, 144–169 Halbstundenschritte bis 24 Stunden, 170–196 Tage bis 30 Tage und 197–255 Wochen darüber hinaus, jeweils ab dem Moment, in dem das Service Center die Nachricht erhält. Dieses Werkzeug akzeptiert 0–8760 Stunden (etwa ein Jahr).
GSM-7, UCS-2 und verkettete SMS
Ein PDU trägt 140 Oktette. Wie viele Zeichen hineinpassen, hängt vom Alphabet und davon ab, ob ein UDH vorhanden ist.
| Kodierung | Einzelner PDU | Mit 8-Bit-UDH | Mit 16-Bit-UDH |
|---|---|---|---|
| GSM-7 | 160 Septette | 153 Septette | 152 Septette |
| UCS-2 | 70 Einheiten | 67 Einheiten | 66 Einheiten |
Ein UDH von 6 Bytes belegt 48 Bit, was in GSM-7 auf 7 Septettplätze aufgerundet wird; eine 16-Bit-Referenz fügt ein weiteres Oktett und einen weiteren Platz hinzu. Daher liegen die Teilungsgrenzen bei 153 oder 152 statt bei 160.
GSM-7 umfasst die lateinischen Buchstaben, Ziffern und Satzzeichen des ursprünglichen GSM-Alphabets. Zehn Zeichen brauchen zwei Septette: €, ^, {, }, [, ], ~, |, der Backslash und das Seitenvorschubzeichen. Der Encoder schreibt vor jedes davon den Escape-Code 1B und trennt ein Paar nie über zwei Teile. Alles außerhalb beider Tabellen erzwingt UCS-2, wobei jedes Zeichen zwei Oktette belegt und das Limit auf 70 sinkt.
Durchgerechnete Beispiele
Diese Ausgaben stammen aus der Regressionsdatei, die mit dieser Seite ausgeliefert wird. Die Eingaben sind unverändert, und das erwartete Hex wurde von einer unabhängigen Implementierung von TS 23.038 / TS 23.040 erzeugt.
| Eingabe | Kodierung | PDU |
|---|---|---|
| Hello SMSDeliverer.com! | GSM-7, nationale Nummer, ohne Service Center | 000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700 |
| € | GSM-7-Erweiterungszeichen | 000100098121436587F90000029B32 |
| 您好,世界! | UCS-2 | 000100098121436587F900080C60A8597DFF0C4E16754CFF01 |
Der Testdatensatz ist assets/js/tests/pdu-vectors.json. Er enthält auch eine Zeichenkette aus einer älteren Build; dieser Vektor ist als fehlschlagend markiert, mit dokumentierten Mängeln, und wird nicht bearbeitet, bis er besteht.
Wann PDU statt Textmodus sinnvoll ist
Der Textmodus ist leichter zu lesen. Nur im PDU-Modus kontrollieren Sie, was tatsächlich gesendet wird.
Lange Nachrichten
Eine verkettete SMS besteht aus mehreren PDUs, die ein UDH verbindet. Die Teile, ihre Reihenfolge und die Referenznummer werden nur im PDU-Modus sichtbar.
Integrationsarbeit
Wenn Sie ein Gateway, eine Testumgebung oder eine Warteschlange bauen, die Rahmen an AT+CMGS übergibt, brauchen Sie die exakten Oktette statt der Interpretation einer Zeichenkette durch das Modem.
Diagnose
Verstümmelter Text, fehlende Akzente und geteilte Nachrichten stammen meist von einem falschen DCS oder einem kaputten UDH. Beides ist hier sichtbar.
Beide Modi erreichen dasselbe Netz und werden gleich abgerechnet. Der Unterschied liegt darin, wo der Rahmen zusammengesetzt wird: im Modem oder in Software, die Sie prüfen können. Wenn eine Nachricht ein bestimmtes Alphabet, eine Gültigkeitsdauer oder eine Zustellberichtsanforderung tragen muss, ist der PDU-Modus der kürzere Weg. Für einen schnellen manuellen Test bleibt der Textmodus sinnvoll, und der Decoder auf dieser Seite liest jeden der beiden Rahmen, sobald er ankommt.
Brauchen Sie eine automatisierte Lösung?
Diese Seite ist ein Referenzwerkzeug. SMS Deliverer erledigt dieselbe Arbeit für jede Nachricht in einer Warteschlange.
Die Windows-Anwendung teilt lange Nachrichten, wählt GSM-7 oder UCS-2, setzt eine UDH-Referenz, wiederholt fehlgeschlagene Teile und speichert den Zustellbericht beim Kontakt. Derselbe Kodierungsweg gilt für eine einzelne Nachricht wie für einige Tausend, und die SIM-Karten in Ihren eigenen Modems tragen den Verkehr.
Der Leitfaden für GSM-Modems erklärt die Hardwareseite, die Seite zur Desktop-Software listet die Sende- und Berichtsfunktionen, und der PDU-Decoder liest Rahmen, die von einem Modem oder Telefon aufgezeichnet wurden.
Im Encoder-Ergebnis enthalten
- GSM-7-Septettpackung und Erweiterungspaare
- UCS-2 mit intakten Surrogatpaaren
- 8-Bit- und 16-Bit-Konkatenationsreferenzen
- Nationale und internationale Zielformate
- Relative Gültigkeitsdauer und Flash-Klasse
Geprüft 2026-11. Eine kostenlose Testversion deckt den Sendeweg vollständig ab; dieses Werkzeug braucht weder Lizenz noch Installation.
Fragen, die Käufer stellen
Ist dieser Encoder kostenlos, und braucht er ein Konto?
Er ist kostenlos und braucht kein Konto. Die Seite besteht aus einfachem HTML und JavaScript und funktioniert auch aus einer Offline-Kopie der Website.
Warum beginnt mein PDU mit 00?
Das erste Oktett ist die Länge der Service-Center-Adresse. 00 bedeutet, dass der PDU kein Service Center enthält, sodass das Endgerät oder Modem das auf der SIM gespeicherte verwendet. Geben Sie eine Service-Center-Nummer ein, wenn sie in den Rahmen geschrieben werden soll.
Warum besteht eine lange Nachricht aus mehreren PDUs?
Ein PDU fasst 140 Oktette. GSM-7 passt 160 Septette, oder 153 bei einem 6-Byte-UDH; UCS-2 passt 70, oder 67 mit demselben Header. Der Text wird an einer Zeichengrenze geteilt, und jeder Teil erhält eine Sequenznummer.
Kann ich die Ausgabe mit AT+CMGS senden?
Ja. Setzen Sie das Modem mit AT+CMGF=0 in den PDU-Modus und übergeben Sie dann die Oktettanzahl des Rahmens nach dem Service-Center-Feld. Senden Sie einen Teil nach dem anderen und halten Sie die Reihenfolge ein, denn das Endgerät setzt die Teile anhand der UDH-Referenz und der Sequenz wieder zusammen.