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.
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).
| Gruppe | Zeichen |
|---|---|
| Lateinische Großbuchstaben | A 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 Kleinbuchstaben | a 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 |
| Ziffern | 0 1 2 3 4 5 6 7 8 9 |
| Satzzeichen | ! " # % & ' ( ) * + , - . / : ; < = > ? _ |
| Akzentuierte lateinische Zeichen | à ä å æ è é ì ñ ò ö ø ù ü Ä Å Æ Ç É Ñ Ö Ø Ü ß |
| Griechische Symbole | Δ Φ Γ Λ Ω Π Ψ Σ Θ Ξ |
| Währung / Zeichen | £ $ ¥ ¤ € (ext) § ¡ ¿ @ |
| Whitespace | SP (Leerzeichen), CR, LF |
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.
| Zeichen | Name |
|---|---|
| | | Vertikaler Strich |
| ^ | Caret / Zirkumflex |
| € | Euro-Zeichen |
| { | Linke geschweifte Klammer |
| } | Rechte geschweifte Klammer |
| [ | Linke eckige Klammer |
| ] | Rechte eckige Klammer |
| ~ | Tilde |
| \ | Backslash |
| FF | Seitenvorschub |
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.
8 characters (56 bits) ────► 7 octets (56 bits)
160 GSM-7 septets ────► 140 octets (the SMS payload limit)
(an extension char = 2 septets)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
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.
Quellenspezifikationen
Diese Seite basiert auf den veröffentlichten Standards. (Wird in einem neuen Tab geöffnet.)