Locking Shift
Englisch: locking shift
Ein zustandsabhängiger Kodierungsmechanismus für die Datenkommunikation (wie GSM SMS) und Zeichencodierungsstandards, um zwischen verschiedenen Zeichensätzen oder Fenster zu wechseln.
Umschaltung mit Sperrfunktion: dauerhafter Wechsel von Zeichensätzen bis zur Rückgängigmachung
Eine Umschaltung mit Sperrfunktion ist ein Steuerzeichen oder eine Codesequenz, die ein Kommunikationsgerät oder einen Prozessor in einen anderen Zeichenkodierungsmodus versetzt und dort behält, bis ein explizites Freigabekommando empfangen wird. Im Unterschied zu einer momentanen Umschaltung, die nur das nächste Zeichen beeinflusst, ändert eine Umschaltung mit Sperrfunktion die grundlegende Interpretation aller nachfolgenden Daten, bis sie aktiv aufgehoben wird. Dieser Mechanismus ist in Systemen unverzichtbar, in denen der verfügbare Symbolbereich kleiner ist als die Gesamtmenge der benötigten Zeichen.
Bei GSM-SMS-Nachrichten stellt das 7-Bit-Standardalphabet 128 Zeichen über den Standard-GSM-Zeichensatz bereit. Um auf erweiterte Zeichen wie geschweifte Klammern, eckige Klammern oder bestimmte Akzente zuzugreifen, verwendet das System Umschaltbefehle mit Sperrfunktion: typischerweise Umschaltcodes, die zwischen dem Hauptzeichensatz und einem Erweiterungssatz umschalten. Eine einzelne Umschaltung mit Sperrfunktion in der Mitte einer Nachricht bedeutet, dass jedes Zeichen danach die alternative Tabelle verwendet, bis eine zweite Umschaltung mit Sperrfunktion zurückschaltet. Dies unterscheidet sich grundlegend von Escape-Sequenzen in einigen Protokollen, bei denen jedes Sonderzeichen explizit aufgerufen werden muss.
Der Begriff taucht am häufigsten in Standards der Mobilfunkkommunikation und in Legacy-Datenübertragungsprotokollen auf. Frühe Zeichenkodierungssysteme wie ISO 2022 nutzten Umschaltungen mit Sperrfunktion als primären Mechanismus zur Handhabung mehrerer Alphabete in einer einzelnen Nachricht. Nach diesem Standard führen die Steuerzeichen SI (Shift In) und SO (Shift Out) genau diese Funktion aus: SO sperrt das Gerät in einen alternativen Zeichensatz, und SI sperrt es zurück zum Standard. Moderne Systeme wie UTF-8 haben diesen Ansatz durch Verwendung von Codierung variabler Breite weitgehend obsolet gemacht, aber die Umschaltung mit Sperrfunktion bleibt in eingeschränkten Umgebungen wie SMS wichtig, wo die Bandbreite pro Zeichen gemessen wird.
Praktische Auswirkungen und Fehlermodi
Ein häufiges Problem in Systemen, die Umschaltungen mit Sperrfunktion verwenden, ist die nicht übereinstimmende Umschaltung: Wenn ein Umschaltbefehl mit Sperrfunktion gesendet wird, die entsprechende Freigabe jedoch bei der Übertragung verloren geht oder beschädigt wird, werden alle nachfolgenden Zeichen mit der falschen Tabelle decodiert, was zu Unsinn führt, bis das Empfangsgerät zurückgesetzt oder manuell synchronisiert wird. Einige Implementierungen enthalten Timeout-Mechanismen, um bei Nichterscheinen gültiger Zeichen innerhalb eines Zeitfensters zum Standardzeichensatz zurückzukehren, aber das ist nicht überall vorhanden. Entwickler, die mit SMS oder ähnlichen Protokollen mit beschränktem Zeichensatz arbeiten, müssen den Umschaltzustand sorgfältig verfolgen und sicherstellen, dass gepaarte Umschaltungen protokolliert und validiert werden.
Der Grund dafür, dass Umschaltungen mit Sperrfunktion überhaupt existieren, ist wirtschaftlich: Sie sparen Bandbreite. Eine momentane Umschalt-Escape-Sequenz erfordert typischerweise 1 bis 3 Overhead-Bytes pro Sonderzeichen, während eine einzelne Umschaltung mit Sperrfunktion auf Dutzende von Zeichen angewendet werden kann. Bei SMS, wo jedes Zeichen Geld kostet und der Platz auf 160 Zeichen für die Basisrate begrenzt ist, ist diese Ersparnis greifbar. Diese Effizienz geht jedoch auf Kosten der Zustandsabhängigkeit, was die Komplexität beim Parsen und bei der Fehlerwiederherstellung erhöht.