Im MobiltelefonieGSM 03.38 oder 3GPP 23.038 ist ein Zeichenkodierung benutzt in GSM Netzwerke für SMS (Kurzer Nachrichtendienst), CB (Zellenübertragung) und USSD (Unstrukturierte ergänzende Servicedaten). Der 3GPP TS 23.038 Standard (ursprünglich GSM -Empfehlung 03.38) definiert GSM 7-Bit-Standard-Alphabet das ist obligatorisch für GSM -Mobilteile und Netzwerkelemente,[1] Aber der Charaktersatz ist nur für geeignet für Englisch und eine Reihe von westlich-europäischen Sprachen. Sprachen wie Chinesen, Koreanisch oder Japanisch müssen mit dem 16-Bit übertragen werden UCS-2 Zeichenkodierung. Eine begrenzte Anzahl von Sprachen wie Portugiesisch, Spanisch, Türkisch und eine Reihe von Sprachen, die in verwendet werden Indien geschrieben mit a Brahmische Skripte kann 7-Bit-Codierung mit verwenden Nationalsprachverschiebungstabelle definiert in 3GPP 23.038. Zum Binäre NachrichtenEs wird 8-Bit-Codierung verwendet.
GSM 7-Bit-Standard-Alphabet- und Erweiterungstabelle von 3GPP TS 23.038 / GSM 03.38
Die Standardcodierung für GSM-Nachrichten ist das 7-Bit-Standard-Alphabet, wie in der Empfehlung 23.038 definiert.
Sieben-Bit-Zeichen müssen nach einem von drei Verpackungsmodi in Oktetten codiert werden:
CBS: Mit dieser Codierung können Sie in einer SMS -Nachricht in einem Mobilfunkdienst bis zu 93 Zeichen (in bis zu 82 Oktetten) in einer SMS -Nachricht senden.
SMS: Mit dieser Codierung können Sie in einer SMS -Nachricht im GSM -Netzwerk bis zu 160 Zeichen (in bis zu 140 Oktetten) in einer SMS -Nachricht senden.
USSD: Mit dieser Codierung ist es möglich, bis zu 182 Zeichen (verpackt in bis zu 160 Oktetten) in einer SMS -Nachricht unstrukturierter Ergänzungsdaten zu senden.
Ff ist eine Seite Break Control. Wenn es nicht erkannt wird, wird es so behandelt wie Lf.
CR2 ist ein Kontrollcharakter. An dieser Position darf kein sprachspezifischer Charakter codiert werden.
SS2 ist eine zweite Einschalt -Fluchtkontrolle, die für zukünftige Erweiterungen vorbehalten ist.
Es ist wichtig (insbesondere wenn eine Nachricht mit Verwendung segmentiert werden soll verkettete SMS Mechanismus), dass Zeichen aus der grundlegenden Charakter -Set -Tabelle ein Septett nehmen, Zeichen aus der grundlegenden Charakter -Set -Erweiterungstabelle zwei Septetten.
Beachten Sie, dass der zweite Teil der Tabelle nur zugänglich ist, wenn das GSM-Gerät den 7-Bit-Erweiterungsmechanismus unter Verwendung des ESC-Zeichenpräfixs unterstützt. Andernfalls wird der ESC -Code selbst als Raum interpretiert, und das folgende Charakter wird so behandelt, als gäbe es keinen führenden ESC -Code.
Der größte Teil des hohen Teils der Tabelle wird im Standard -Zeichensatz nicht verwendet, aber der GSM -Standard definiert einige Sprachcode -Indikatoren, mit denen das System nationale Varianten dieses Teils identifizieren kann, um mehr Zeichen zu unterstützen als die in der obigen Tabelle angezeigten.
In einer Standard-GSM-Textnachricht werden alle Zeichen mit 7-Bit-Code-Einheiten codiert, die zusammengepackt sind, um alle Oktettenbits zu füllen. Also zum Beispiel der 140-Okt-Umschlag von a SMS,[3] ohne andere Sprachanzeige, aber nur das Standardklassenpräfix kann bis zu (140*8)/7 = 160 transportieren, das sind 160 GSM 7-Bit-Zeichen (aber beachten Sie, dass der ESC-Code für eines von ihnen zählt, wenn Zeichen in Der hohe Teil der Tabelle wird verwendet).
Es können längere Nachrichten gesendet werden, erfordern jedoch ein Fortfix und eine Sequenznummer für nachfolgende SMS-Nachrichten (diese Präfix-Bytes und die Sequenznummer werden innerhalb der maximalen Länge der 140-Octet-Nutzlast des Umschlagformats gezählt).
Wenn es 1 bis 6 Ersatzbits im letzten Oktett einer Nachricht gibt, werden diese Bits auf Null gesetzt (diese Bits zählen nicht als Zeichen, sondern nur als Füllstoff). Wenn es im letzten Oktett einer Nachricht 7 Ersatzbits gibt, werden diese Bits auf den 7-Bit-Code der CR-Steuerung (auch als Polsterfüller verwendet) eingestellt, anstatt auf Null eingestellt zu werden (wo sie mit dem verwechselt werden würden 7-Bit-Code eines '@' -Scharakters).
Diese 7-Bit-Codierung ermöglicht den Transport von Texten, die in der grundlegenden lateinischen Untergruppe von ASCII codiert sind, sowie einige Zeichen des ISO-Latein 1-Zeichenssatzes. Es ermöglicht auch die Codierung von Texten, die im griechischen Skript geschrieben wurden, jedoch nur in den Hauptstädten; Für eine solche Verwendung im Griechischen werden die lateinischen Großbuchstaben, die wie die griechischen Buchstaben aussehen, mit demselben Code wiederverwendet werden, so dass der oben genannte Charakter -Set nur für moderne monotonische griechische Griechen abgeschlossen ist, die auf Großbuchstaben beschränkt sind. Eine vollständige Unterstützung für das griechische Alphabet (einschließlich kleiner Buchstaben) erfordert eine nationale Version der verschobenen 7-Bit Verwendung der UCS-2-Codierung (siehe unten).
Beachten Sie, dass der spezielle Code gekennzeichnet ist SS2 In der obigen Tabelle wurde ebenfalls zugewiesen (und als 0x1b, 0x1b codiert), um die Verwendung einer anderen alternativen 7-Bit-Verschiebungstabelle zu ermöglichen. Dieser Mechanismus wurde jedoch nie verwendet und die UCS-2-Codierung wurde bevorzugt.
Beachten Sie, dass das Zeichen 0x09 (Ç, Capital C mit Cedilla) sollte stattdessen durch ersetzt werden ç (klein C mit Cedilla) in der modernen Implementierung, wie von Unicode empfohlen,[4] Da ist die Großbuchstaben von geringem Nutzen.
GSM 8-Bit-Datencodierung
8-Bit-Datencodierungsmodus behandelt die Informationen als Rohdaten. Gemäß dem Standard ist das Alphabet für diese Codierung benutzerspezifisch.
UCS-2-Codierung
Diese Codierung ermöglicht die Verwendung einer größeren Reihe von Zeichen und Sprachen. UCS-2 Kann die am häufigsten verwendeten lateinischen und östlichen Zeichen auf Kosten eines größeren Platzkostens darstellen. Streng genommen ist UCS-2 auf Charaktere in der beschränkt Grundlegende mehrsprachige Ebene. Da moderne Programmierumgebungen jedoch keine Codierer oder Decoder für UCS-2 bereitstellen, einige Mobiltelefone (z. iPhones) verwenden UTF-16 anstelle von ucs-2.[5] Dies funktioniert, da für Zeichen in der grundlegenden mehrsprachigen Ebene (einschließlich der vollständigen Alphabete der meisten modernen menschlichen Sprachen) UCS-2- und UTF-16-Kodierungen identisch sind. Zeichen außerhalb des BMP (in einfacher UCS-2 nicht erreichbar), wie z. Emoji, UTF-16 verwendet Ersatzpaare, was, wenn er mit UCS-2 dekodiert ist Codepunkte.
Eine einzelne SMS -GSM -Nachricht, die diese Codierung verwendet, kann höchstens 70 Zeichen (140 Oktetten) haben.
Beachten Sie, dass bei vielen GSM-Handys keine spezifische Vorauswahl der UCS-2-Codierung vorliegt. Die Standardeinstellung besteht darin, die oben beschriebene 7-Bit-Codierung zu verwenden, bis man in ein Zeichen eintritt, das in der GSM 7-Bit-Tabelle nicht vorhanden ist (zum Beispiel das Kleinbuchstaben 'A' mit akut: 'Á'). In diesem Fall wird die gesamte Meldung mit der UCS-2-Codierung neu eingestellt, und die maximale Länge der in einer einzelnen SMS gesendeten Nachricht wird sofort auf 70 Zeichen anstelle von 160 reduziert. Andere variieren je nach Auswahl und Konfiguration der SMS-Anwendung und die Länge der Nachricht.
Um unerwartete Kosten für Absender zu vermeiden, die ein Abonnement für eine begrenzte Packung gesendeter SMS haben, sollten Bewerbungen[Nach wem?] Zeigen Sie die Anzahl der verwendeten Zeichen und die maximale Anzahl von Zeichen in den komponierten SMS an. Wenn eine Nachricht dieses Maximum überschreitet, wird die Nachricht[Klarstellung erforderlich] Als mehrere aufeinanderfolgende SMS mit Teilen der Nachricht gesendet werden (jeweils eine Sequenznummer, die auch einige führende Zeichen in jedem Teil verwendet); Diese Teile sollen später vom Empfänger wieder zusammengestellt werden.
Einige Anwendungen alarmieren den Benutzer, wenn eine Nachricht aufgeteilt werden muss, oder sendet sogar eine längere Nachricht als a Multimedia -Nachricht (MMS).
Nationalsprachschichttabellen
Seit Release 8 der 3GPP 23.038 Standard im März 2008, auf zusätzliche Zeichensets können mithilfe einer Nationalsprachverschiebungstabellen zugegriffen werden.
Diese Tabellen ermöglichen die Verwendung verschiedener Zeichensätze nach der Sprache, die der Text geschrieben wird. Die Auswahl der Tabelle für eine bestimmte Nachricht wird in der ausgewählt Benutzerdatenheader Abschnitt einer SMS -Nachricht und kann für den gesamten Text (a) angegeben werden Sperren Verschiebungstabelle ersetzt die Standard-GSM 7-Bit-Standard-Alphabet-Tabelle) oder ein einzelnes Zeichen (ein einzelnes Zeichen (Single Verschiebungstabelle ersetzt die GSM 7-Bit-Standard-Alphabet-Erweiterungstabelle). Sperren und Single Schalttabellen in derselben Nachricht sind möglich, wenn sowohl Standard -Standard -Alphabet -Tabelle als auch Standard -Alphabet -Erweiterungstabelle ersetzt werden sollen.
Mit einer Verschiebungstabelle kann eine Nachricht weiterhin 7-Bit-Codierung für die Zeichen verwenden, aber ein anderer Satz kann ausgewählt werden, um akzentuierte und sprachspezifische Zeichen korrekt anzuzeigen. Dies ermöglicht bis zu 155 Zeichen, codiert in 136 Oktetten (140 Oktetten, abzüglich der 4-Oktette von Benutzerdatenheader erforderlich, um die Verwendung einer Verschiebungstabelle und des Sprachcodes anzugeben). Mit beiden Sperren und Single Schichttische, bis zu 152 Zeichen sind erlaubt, in 133 Oktetten (140 Oktetten, minus 7-Oktetten Benutzerdatenheader).
Zeichen aus jeder Verriegelungsverschiebungstabelle nehmen ein Septett auf, Zeichen aus der Einzelverschiebungstabelle (oder grundlegender Zeichensatzerweiterungstabelle) zwei Septette.
Zunächst wurden Schalttische nur für Türkisch angegeben; Spanisch und Portugiesisch wurden in späteren Überarbeitungen von Release 8 hinzugefügt. Release 9 Einführte 10 Sprachen, die in Indien verwendet wurden, geschrieben mit a Brahmische Skripte (Bengali, Gujarati, Hindi, Kannada, Malayalam, Oriya, Punjabi, Tamil, Telugu) und Urdu.
Es gibt immer noch keinen definierten Nationalsprachverschiebungstabelle für französische, griechische, russische, bulgarische, arabische, hebräische und die meisten mitteleuropäischen Sprachen, die eine bessere Berichterstattung benötigen als der Standard-7-Bit-Standard-Charakter-Set und der Standard-7-Bit-Erweiterungsfigur: Wenn jemals ein Zeichen komponiert wird, der in diesen Standard-GSM-7-Bit-Sets nicht dargestellt werden kann Zum Preis einer einzelnen SMS (wenn eine Nachricht in mehreren Teilen aufgeteilt wird, werden einige andere Oktetten in der benötigt Benutzerdatenheader um die Sequenznummer jedes Teils anzuzeigen).
Obwohl eine Überarbeitung von GSM 03.38 (bereits in Version 4.0.1 von September 1994) Datencodierungsschema -Werte für definiert hat Zellenübertragung System (CBS) für Deutsch, Englisch, Italienisch, Französisch, Spanisch, Niederländisch, Schwedisch, Dänisch, Finnisch, Norwegisch, Griechisch und türkisch; Mit ungarischem, polnischem, tschechischem, hebräischen, arabischen, russischen und isländischen in späteren Überarbeitungen hinzugefügten Codierungstabellen wurden für diese Sprachen keine Codierungstabellen definiert. Der Zweck dieses Feldes bestand nur darin, die Sprache der Nachricht zu identifizieren.
Es gibt auch keinen Sprachverschiebungstabelle für Japaner, der in Basic Kanas geschrieben ist, oder für Koreaner in Hangul Jamos oder für Chinesen, die im Han -Drehbuch geschrieben wurden. Dies ist in Japan oft kein Problem, da es andere Standards als GSM und WAP für Nachrichten verwendet. Die beiden anderen Sprachen haben auch zu viele unterschiedliche Zeichen, um in eine 7-Bit-Verschiebungstabelle zu passen.
Es kann auch für die verwendet werden Sindhi Sprache auch in der arabischen Skript geschrieben.
Manchmal kann es für verwendet werden arabische Sprache Auch die östlichen Ziffern (hier in ihrer persisch-hindu-Variante codiert) werden in diesem Fall nicht verwendet, da Standard-Arabisch seine traditionellen ostarabischen Ziffern bevorzugen und häufig durch westliche Arabische Ziffern ersetzt werden (codiert in der Verriegelungsverschiebung Zeichen in Spalte 0x30), die jetzt auch häufig in Urdu verwendet werden. In Indien können Telefone, die die arabische Sprachanzeige anerkennen, jedoch die persisch-hinduistischen Varianten der östlichen Arabischen Ziffern durch die traditionellen ostarabischen Ziffern ersetzen.