Escape-Zeichen

Im Computer und Telekommunikation, ein Escape-Zeichen ist ein Charakter Das ruft eine alternative Interpretation auf die folgenden Zeichen in einer Zeichensequenz hervor. Ein Fluchtcharakter ist ein besonderer Fall von Metacharaccters. Im Allgemeinen hängt das Urteil darüber, ob etwas ein Fluchtcharakter ist oder nicht, vom Kontext ab.

In dem Telekommunikation Feld, Fluchtzeichen werden verwendet, um anzuzeigen, dass die folgenden Zeichen unterschiedlich codiert werden. Dies wird verwendet, um sich zu ändern Steuerzeichen Das würde ansonsten von der zugrunde liegenden Telekommunikationshardware bemerkt und bewirkt. In diesem Zusammenhang wird die Verwendung von Escape -Zeichen oft als bezeichnet als Zitieren.

Definition

Ein Fluchtcharakter hat möglicherweise keine eigene Bedeutung, daher sind alle Fluchtsequenzen von zwei oder mehr Zeichen.

Escape -Charaktere sind Teil der Syntax Für viele Programmiersprachen, Datenformate und Kommunikationsprotokolle. Für ein gegebenes Alphabet Der Zweck eines Fluchtcharakters ist es, Zeichensequenzen zu starten (so genannt Fluchtsequenzen), die anders als die gleichen Zeichen ohne den vorangestellten Fluchtcharakter interpretiert werden müssen.

Die Funktionen von Escape -Sequenzen umfassen:

  • Um eine syntaktische Entität zu codieren, wie z. B. Gerätebefehle oder spezielle Daten, die nicht direkt vom Alphabet dargestellt werden können.
  • Charaktere darstellen, bezeichnet als als Charakterzitat, die im aktuellen Kontext nicht tippt werden kann oder eine unerwünschte Interpretation haben würde. In diesem Fall ist eine Fluchtsequenz a Digraph bestehend aus einem Fluchtcharakter selbst und einem "zitierten" Charakter.

Steuerzeichen

Im Allgemeinen ist ein Fluchtcharakter kein spezieller Fall von (Gerät) SteuerzeichenNoch umgekehrt. Wenn wir Kontrollzeichen als nicht definierenGrafikoder als besondere Bedeutung für ein Ausgabegerät (z. Drucker oder Text Terminal) Dann ist ein Fluchtcharakter für dieses Gerät eine Steuerung. Es entkommenen Zeichen jedoch, die bei der Programmierung verwendet werden (wie die Backslash, "\") sind grafisch, daher sind keine Kontrollzeichen. Umgekehrt die meisten (aber nicht alle) der ASCII "Steuerzeichen" haben isoliert eine gewisse Kontrollfunktion, daher sind sie keine Fluchtzeichen.

In vielen Programmiersprachen bildet ein Fluchtcharakter auch einige Fluchtsequenzen, die als Kontrollzeichen bezeichnet werden. Zum Beispiel, Zeilenumbruch hat eine Fluchtsequenz von \n.

Beispiele

JavaScript

JavaScript verwendet die \ (Backslash) als Fluchtcharakter für:[1][2]

  • \' Single Zitat
  • \" Doppelzitat
  • \\ Backslash
  • \n Neue Zeile
  • \r Kutschenrückkehr
  • \t Tab
  • \b Rücktaste
  • \f Formfutter
  • \v vertikale Registerkarte (Internet Explorer 9 und ältere Leckereien '\v wie 'v anstelle einer vertikalen Registerkarte ('\x0B). Wenn die Kompatibilität des Cross-Browsers ein Problem darstellt, verwenden Sie \x0B Anstatt von \v.))
  • \0 NULL -Zeichen (U+0000 NULL) (Nur wenn das nächste Zeichen keine Dezimalfigur ist; sonst handelt es sich um eine Octal Escape -Sequenz)
  • \xFF Charakter, dargestellt durch das hexadezimale Byte "ff"

Notiere dass der \v und \0 Flucht sind in JSON -Saiten nicht erlaubt.

Beispielcode:

Konsole.Protokoll("Verwenden \\ n \ nWille verschieben die Zeichen nach \\ n eine Zeile nach unten") Konsole.Protokoll("Verwenden \\ t \ twill verschieben die Zeichen nach \\ t eine Registerkarte nach rechts") Konsole.Protokoll("Verwenden Sie \\ r \ rwill imitieren eine Wagenrendite, was bedeutet, sich auf den Beginn der Reihe zu verschieben") // kann verwendet werden, um den Bildschirm an einigen Terminals zu löschen. Windows verwendet \ r \ n anstelle von \ n allein 

ASCII entkommenscharakter

Der ASCII "Escape" -Charakter (Oktal: \033, hexadezimal: \x1B, oder ^[oder, in Dezimaler, 27) wird in vielen Ausgabegeräten verwendet, um eine Reihe von Zeichen zu starten, die als Kontrollsequenz oder Escape -Sequenz bezeichnet werden. Normalerweise wurde das Escape -Zeichen in einer solchen Reihenfolge zuerst gesendet, um das Gerät zu alarmieren, dass die folgenden Zeichen eher als Kontrollsequenz als als einfache Zeichen interpretiert werden sollten, dann würde ein oder mehrere Zeichen folgen, um eine detaillierte Aktion anzugeben, wonach die Das Gerät würde wieder auf die normalen Interpretation von Zeichen zurückkehren. Zum Beispiel die Abfolge von ^[, gefolgt von den druckbaren Zeichen [2;10H, würde a verursachen Dez VT102 Terminal, um seine zu bewegen Mauszeiger zur 10. Zelle der 2. Zeile des Bildschirms. Dies wurde später entwickelt zu Ansi Escape Codes bedeckt vom ANSI X3.64 -Standard. Das Escape -Zeichen startet auch jede Befehlssequenz in der Hewlett Packard Druckerbefehlssprache.

Ein frühzeitiger Hinweis auf den Begriff "Escape -Charakter" findet sich in Bob Bemer's IBM Technical Publications, der diesen Mechanismus während seiner Arbeit an der Erfindung zugeschrieben wird ASCII Zeichensatz.[3]

Das Fluchtschlüssel wird normalerweise auf Standard -PC -Tastaturen gefunden. Es fehlt jedoch üblicherweise bei Tastaturen für PDAs und andere Geräte, die nicht hauptsächlich für die ASCII -Kommunikation konzipiert sind. DER DEC VT220 Die Serie war eines der wenigen beliebten Tastaturen, die keinen dedizierten ESC -Schlüssel hatten, anstatt einen der Tasten über der Haupttastatur zu verwenden. Im Benutzeroberflächen In den 1970er bis 1980er Jahren war es nicht ungewöhnlich, diesen Schlüssel als Fluchtcharakter zu verwenden, aber in modernen Desktop -Computern wird eine solche Verwendung fallen gelassen. Manchmal wurde der Schlüssel mit AltMode (für den alternativen Modus) identifiziert. Auch ohne dedizierte Schlüssel kann der Flucht -Zeichencode durch Eingabe generiert werden [ Während gleichzeitig festhalten Strg.

Programmier- und Datenformate

Viele modern Programmiersprachen Geben Sie den Doppelquote-Charakter an (") Als ein Abgrenzer Für ein Saitenliteral. Das Backslash (\) Escape-Zeichen bietet typischerweise zwei Möglichkeiten, um Doppelquoten innerhalb eines Saitenliterales einzubeziehen, entweder durch Modifizierung der Bedeutung des in der Zeichenfolge eingebetteten Doppelquotcharakters (\" wird ") oder durch Ändern der Bedeutung einer Abfolge von Zeichen, einschließlich des hexadezimalen Wertes eines Doppelquote-Charakters (\x22 wird ").

C, C ++, Java, und Rubin Alle erlauben genau die gleichen zwei Backslash -Fluchtstile. Das PostScript Sprache und Microsoft Rich-text-Format Verwenden Sie auch Backslash Escapes. Das zitiert Codierung verwendet das Gleiches Zeichen als Fluchtcharakter.

URL und Uri verwenden %-entkommt Charaktere mit einer besonderen Bedeutung zitieren, wie bei Nicht-ASCII-Zeichen. Das Et-Zeichen (&) Charakter kann als Fluchtcharakter in betrachtet werden SGML und abgeleitete Formate wie z. Html und Xml.

Einige Programmiersprachen bieten auch andere Möglichkeiten, Sonderzeichen in Literalen darzustellen, ohne einen Fluchtcharakter zu erfordern (siehe z. Grenzkollision).

Kommunikationsprotokolle

Das Punkt-zu-Punkt-Protokoll (PPP) verwendet die 0x7D Oktett (\175, oder ASCII: }) als Fluchtcharakter. Das Oktett unmittelbar folgt sein sollte Xored durch 0x20 bevor er an ein höheres Protokoll übergeben wird. Dies wird auf beide angewendet 0x7D selbst und der Kontrollcharakter 0x7E (Das wird in PPP verwendet, um den Beginn und das Ende eines Rahmens zu markieren) Wenn diese Oktetten durch ein von PPP eingekapseltes höheres Protokoll übertragen werden müssen, sowie andere Oktetten, die beim Erstellen der Verbindung ausgehandelt werden. Das heißt, wenn ein höheres Protokoll übertragen möchte 0x7D, es wird als Sequenz übertragen 0x7D 0x5D, und 0x7E wird übertragen wie 0x7D 0x5E.

Bourne Shell

Im Bourne Shell (sh) die Sternchen (*) und Fragezeichen (?) Zeichen sind Wildcard -Charaktere erweitert über Kugeln. Ohne einen vorhergehenden Fluchtcharakter, eine * erweitert auf die Namen aller Dateien in der Arbeitsverzeichnis das beginnt nicht mit einer Periode dann und nur dann, wenn Es gibt solche Dateien, ansonsten * bleibt nicht verfolgt. Um sich auf eine Datei zu beziehen, die buchstäblich "*" bezeichnet wird, muss die Shell gesagt werden, dass sie sie nicht auf diese Weise interpretieren soll, indem sie sie mit einem Backslash vorgeht (\). Dies verändert die Interpretation des Sternchens (*). Vergleichen:

 
rm * # Löschen Sie alle Dateien im aktuellen Verzeichnis rm \*  # Löschen Sie die Datei mit dem Namen * 

Windows -Eingabeaufforderung

Das Windows-Befehlszeilen-Interpreter verwendet a Pflege Charakter (^) Um reservierte Zeichen zu entkommen, die besondere Bedeutungen haben (insbesondere: &, |, (, ), <, >, ^).[4] Das DOS Command Line InterpreterObwohl es eine ähnliche Syntax hat, unterstützt dies nicht.

Auf der Windows -Eingabeaufforderung führt dies beispielsweise zu einem Syntaxfehler.

C: \>Echo <Hallo Welt>Die Syntax des Befehls ist falsch. 

Während dies die Zeichenfolge ausgibt:

C: \>Echo ^<Hallo Welt^>  

Windows PowerShell

Im FensterDer Backslash wird als Pfadabscheider verwendet; Daher kann es im Allgemeinen nicht als Fluchtcharakter verwendet werden. Power Shell Verwendet Backtick[5] (`) stattdessen.

Zum Beispiel der folgende Befehl:

PS C: \> Echo "`tErste Linie`nNeue Zeile"         Erste Linie Neue Zeile 

Andere

  • Zitiert, das 8-Bit-Daten in 7-Bit-Daten von begrenzten Leitungslängen codiert, verwendet die Gleiches Zeichen (=) als Fluchtcharakter.

Siehe auch

Verweise

  1. ^ "JavaScript -Zeichen -Escape -Sequenzen · Mathias Bynens". Mathiasbynens.be. Abgerufen 2014-06-30.
  2. ^ "Sonderzeichen (JavaScript)". Msdn.microsoft.com. 2014-06-20. Abgerufen 2014-06-30.
  3. ^ Bemer, Bob. "Wie Bob Bemer die Fluchtsequenz und den Schlüssel erfunden hat". www.bobbemer.com. Archiviert von das Original am 4. Januar 2018. Abgerufen 22. März 2018.
  4. ^ Tim Hill (1998). "Die Windows NT -Befehlsschale". Macmillan Technical Publishing. Abgerufen 2010-01-13.
  5. ^ "About_escape_characters". Msdn.microsoft.com. 2014-05-08. Archiviert von das Original Am 2016-11-25. Abgerufen 2016-11-24.

Externe Links

Public DomainDieser Artikel enthältPublic Domain Material von dem General Services Administration dokumentieren: "Bundesstandard 1037c".