Zum Inhalt springen
PDU-Encoder

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.

Läuft in diesem BrowserKein KontoGSM-7 und UCS-2

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

GSM-7 fasst 160 Septette in einer SMS. Ein Zeichen außerhalb des GSM-Alphabets verschiebt die ganze Nachricht nach UCS-2.

National (0x81), außer die Nummer beginnt mit +; dann wird international (0x91) gewählt.

0 lässt das Feld aus. Das Werkzeug begrenzt den Wert auf 8760 Stunden (etwa ein Jahr).

0–255 nutzt eine 8-Bit-Referenz, 256–65535 eine 16-Bit-Referenz.

Berichtsoptionen

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

FeldOktetteWas es trägtWas dieser Encoder schreibt
SCA1 + nAdresse des Service Centers und deren Adresstyp-Oktett00 bei leerem Feld, sonst das Längenoktett, der Adresstyp und die BCD-Ziffern
Erstes Oktett1Nachrichtentyp, Gültigkeitsformat, Berichtsanforderung, User-Data-Header-Flag01 für SMS-SUBMIT, bei Bedarf plus 40, 10 und 20
MR1Vom Endgerät hochgezählte NachrichtenreferenzDie Konkatenationsreferenz, auf ein Oktett gekürzt; 00, wenn nicht gesetzt
Ziel2 + nNummernlänge, Adresstyp und BCD-Ziffern81 für eine nationale Nummer, 91, wenn die Eingabe mit + beginnt
PID1Protokollkennung00, eine normale Kurznachricht
DCS1Alphabet und Nachrichtenklasse00 für GSM-7, 08 für UCS-2, 10 oder 18 für eine Flash-Nachricht
VP0, 1 oder 7Gültigkeitsdauer: relativ, erweitert oder absolutBei 0 Stunden weggelassen; sonst ein relatives Oktett, dessen Schrittweite mit dem Bereich wächst (5 Minuten, halbe Stunde, Tag, Woche)
UDL1Länge der NutzdatenSeptettanzahl bei GSM-7 (der UDH zählt als Septette), Oktettanzahl bei UCS-2
UDnOptionaler UDH plus der gepackte Text7-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.

KodierungEinzelner PDUMit 8-Bit-UDHMit 16-Bit-UDH
GSM-7160 Septette153 Septette152 Septette
UCS-270 Einheiten67 Einheiten66 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.

EingabeKodierungPDU
Hello SMSDeliverer.com!GSM-7, nationale Nummer, ohne Service Center000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700
€GSM-7-Erweiterungszeichen000100098121436587F90000029B32
您好,世界!UCS-2000100098121436587F900080C60A8597DFF0C4E16754CFF01

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.