BroadNet
SMS-CodierungZeichensätze

Der GSM-7-Zeichensatz

Aktualisiert am 3 Min. LesezeitStandardsbasiert
Direkte Antwort

GSM-7 ist das 7-Bit-Standardalphabet, das in GSM 03.38 (3GPP TS 23.038) für SMS definiert ist. Es codiert 128 Zeichen — lateinische Buchstaben, Ziffern, Satzzeichen sowie einige akzentuierte und griechische Zeichen — in je 7 Bit. Zehn zusätzliche Zeichen liegen in einer Erweiterungstabelle und kosten je zwei Septette. Text fasst 160 Zeichen je einzelner SMS.

§01

Die Basistabelle (128 Zeichen)

Das GSM-7-Standardalphabet packt 128 Zeichen in je 7 Bit. Es umfasst das lateinische Großbuchstabenalphabet, Ziffern, gängige Satzzeichen, einen Satz akzentuierter lateinischer Vokale, das Absatz- und Währungszeichen sowie mehrere als Symbole verwendete griechische Großbuchstaben. Jedes Zeichen hier kostet genau ein Septett (7 Bit).

GSM-7-Basisalphabet (nach Gruppe)
GruppeZeichen
Lateinische GroßbuchstabenA B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Lateinische Kleinbuchstabena b c d e f g h i j k l m n o p q r s t u v w x y z
Ziffern0 1 2 3 4 5 6 7 8 9
Satzzeichen! " # % & ' ( ) * + , - . / : ; < = > ? _
Akzentuierte lateinische Zeichenà ä å æ è é ì ñ ò ö ø ù ü Ä Å Æ Ç É Ñ Ö Ø Ü ß
Griechische SymboleΔ Φ Γ Λ Ω Π Ψ Σ Θ Ξ
Währung / Zeichen£ $ ¥ ¤ € (ext) § ¡ ¿ @
WhitespaceSP (Leerzeichen), CR, LF
§02

Die Erweiterungstabelle

Zehn Zeichen sind nicht in der Basistabelle enthalten. Sie werden über ein Escape-Präfix (0x1B) gefolgt vom Code des Zeichens in der Erweiterungstabelle erreicht, was bedeutet, dass jedes davon zwei Septette statt einem kostet. Wird eines davon in eine Nachricht aufgenommen, verringert dies die effektive Kapazität einer einzelnen SMS. Beachten Sie, dass das Euro-Zeichen (€) eines davon ist.

GSM-7-Erweiterungstabelle — jedes kostet 2 Septette
ZeichenName
|Vertikaler Strich
^Caret / Zirkumflex
€Euro-Zeichen
{Linke geschweifte Klammer
}Rechte geschweifte Klammer
[Linke eckige Klammer
]Rechte eckige Klammer
~Tilde
\Backslash
FFSeitenvorschub
§03

7-Bit-Packing

Da jedes Zeichen 7 Bit hat, Oktette aber 8 Bit, packt GSM-7 Septette über Byte-Grenzen hinweg. Acht 7-Bit-Zeichen passen in sieben 8-Bit-Oktette, sodass 160 Septette 140 Oktette füllen — das Nutzdatenlimit der SMS. Das Packing verschiebt die Bits jedes nachfolgenden Zeichens, um die Lücken zu füllen, weshalb eine naive Byte-pro-Zeichen-Ansicht einer GSM-7-SMS verwürfelt aussieht.

Septett-Packing — 160 Septette → 140 Oktettetext
8 characters (56 bits) ────► 7 octets (56 bits)
160 GSM-7 septets       ────► 140 octets (the SMS payload limit)
                              (an extension char = 2 septets)
§04

Sprach-Shift-Tabellen

3GPP TS 23.038 definiert außerdem nationale Sprach-Shift-Tabellen (zum Beispiel Türkisch, Spanisch, Portugiesisch), die einige Positionen der Erweiterungstabelle auf sprachspezifische Buchstaben ummappen. Die Unterstützung ist über Endgeräte und Netze hinweg lückenhaft, sodass viele Absender darauf verzichten und auf UCS-2 zurückfallen, wenn eine Nachricht Zeichen außerhalb des GSM-7-Basissatzes benötigt.

Häufig gestellte Fragen

Häufig gestellte Fragen

Wie viele Zeichen passen in eine GSM-7-SMS?

160 Zeichen in einer einzelnen SMS, weil 160 Septette zu je 7 Bit das 140-Oktett-Nutzdatenlimit füllen. Verkettete GSM-7-Nachrichten sinken auf 153 Zeichen je Segment, um Platz für den User Data Header zu schaffen.

Welche Zeichen zählen in GSM-7 als zwei?

Die zehn Zeichen der Erweiterungstabelle — | ^ € { } [ ] ~ \ und Form Feed — kosten je zwei Septette, weil sie ein Escape-Präfix benötigen. Die Verwendung eines davon verringert, wie viel Text in eine einzelne SMS passt.

Ist das Euro-Zeichen in GSM-7 enthalten?

Ja, aber in der Erweiterungstabelle, sodass es zwei Septette statt einem kostet. Eine Nachricht mit € fasst daher weniger Zeichen, bevor ein zweites Segment nötig wird.

Warum sieht eine GSM-7-Nachricht auf Byte-Ebene verwürfelt aus?

Weil GSM-7 7-Bit-Zeichen über 8-Bit-Oktett-Grenzen hinweg packt. Acht Zeichen belegen sieben Oktette, sodass das Lesen der Nutzlast als ein Byte je Zeichen Unsinn ergibt — Sie müssen die Septette zuerst entpacken.

Was passiert, wenn mein Text ein Zeichen enthält, das nicht in GSM-7 ist?

Die gesamte Nachricht muss auf UCS-2-Codierung (16 Bit) umschalten, was die Kapazität einer einzelnen SMS von 160 auf 70 Zeichen senkt. Ein einziges Nicht-GSM-7-Zeichen (ein Emoji, ein typografisches Anführungszeichen oder viele nicht-lateinische Buchstaben) erzwingt dies.

Referenzen

Quellenspezifikationen

Diese Seite basiert auf den veröffentlichten Standards. (Wird in einem neuen Tab geöffnet.)

BNWird vom BroadNet -Entwicklungsteam betreut.·Messaging in Carrier-Qualität seit 2003
Hänge es an den Draht

Entwicklung mit echtem SMPP Binding und REST-API.

Fordern Sie Testzugriff mit echten Testschlüsseln an: Senden Sie zunächst an Ihre eigene verifizierte Nummer und gehen Sie dann in über 200 Ländern zum Produktivbetrieb über, sobald Ihre Absenderidentität und die Routen genehmigt wurden.