Úniková postava - Escape character

Ve výpočetní a telekomunikační , An escape znak je znak , který vyvolá alternativní výklad o následujících znaků v sekvenci znaků. Úniková postava je konkrétním případem metaznaků . Obecně úsudek, zda je něco únikovou postavou, závisí na kontextu.

V poli telekomunikací se únikové znaky používají k označení, že následující znaky jsou kódovány odlišně. Toto se používá ke změně řídicích znaků, kterých by si jinak všiml a na základě kterých by se řídil základní telekomunikační hardware. V této souvislosti je použití únikových znaků často označováno jako citace .

Definice

Úniková postava nemusí mít svůj vlastní význam, takže všechny únikové sekvence mají dva nebo více znaků.

Únikové znaky jsou součástí syntaxe mnoha programovacích jazyků, datových formátů a komunikačních protokolů. Účelem únikové postavy pro danou abecedu je spustit znakové sekvence (takzvané únikové sekvence ), které je třeba interpretovat odlišně od stejných znaků, které se vyskytují bez předponového únikového znaku.

Mezi funkce únikových sekvencí patří:

  • Kódovat syntaktickou entitu, jako jsou příkazy zařízení nebo speciální data, která nemohou být přímo reprezentována abecedou.
  • Reprezentovat znaky, označované jako citace znaků , které nelze v aktuálním kontextu zadat nebo by měly nežádoucí interpretaci. V tomto případě je úniková sekvence digraf sestávající ze samotného únikového znaku a „citovaného“ znaku.

Kontrolní postava

Únikový znak obecně není konkrétním případem řídicích znaků (zařízení) , ani naopak. Pokud budeme definovat řídicí znaky jako non grafiku , nebo mají zvláštní význam pro výstupní zařízení (např tiskárny nebo textovém terminálovém ) pak každý znak escape pro toto zařízení je ovládání jednou. Ale únikové znaky používané v programování (například zpětné lomítko , "\") jsou grafické, a proto nejsou řídícími znaky. Naopak většina (ale ne všechny) " ASCII " řídicích znaků "má nějakou kontrolní funkci izolovaně, proto nejsou únikovými znaky.

V mnoha programovacích jazycích tvoří únikový znak také některé únikové sekvence, které se označují jako řídicí znaky. Například konec řádku má únikovou sekvenci \n.

Příklady

JavaScript

JavaScript používá \(zpětné lomítko) jako únikový znak pro:

  • \' jediný citát
  • \" dvojitá citace
  • \\ obrácené lomítko
  • \n nový řádek
  • \r návrat vozíku
  • \t tab
  • \b backspace
  • \f krmivo
  • \vvertikální Karta ( Internet Explorer 9 a starších zachází '\vjako 'vmísto kartu vertikální ( '\x0B). Je-li kompatibilita cross-browser je obava, použijte \x0Bmísto \v.)
  • \0 nulový znak (U+0000 NULL) (pouze pokud další znak není desetinná číslice; v opačném případě jde o osmičkovou únikovou sekvenci)
  • \xFF znak reprezentovaný hexadecimálním bytem "FF"

Všimněte si, že únik \va a \0není povoleno v řetězcích JSON.

Úniková postava ASCII

ASCII „uniknout“ znak ( osmičkové : \033, hexadecimální : \x1B, nebo ^[, nebo, v desítkové soustavě, 27), se používá v mnoha výstupních zařízeních, kdo řadu znaků zvaných kontrolní sekvence nebo sekvence escape. Typicky byl únikový znak odeslán jako první v takové posloupnosti, aby upozornil zařízení, že následující znaky mají být interpretovány jako kontrolní sekvence, nikoli jako prosté znaky, poté bude následovat jeden nebo více znaků, aby se specifikovala nějaká podrobná akce, po které zařízení by se vrátilo k normálnímu výkladu znaků. Sekvence ^[, za kterou následují tisknutelné znaky [2;10H, by například způsobila, že terminál DEC VT102 přesune kurzor do 10. buňky druhého řádku obrazovky. To bylo později vyvinuto na únikové kódy ANSI, na které se vztahuje standard ANSI X3.64. Znak escape také spustí každou sekvenci příkazů v příkazovém jazyce tiskárny Hewlett Packard .

Časný odkaz na termín „úniková postava“ se nachází v technických publikacích Boba Bemera IBM, který má zásluhu na vynalezení tohoto mechanismu během své práce na znakové sadě ASCII .

Klávesy Escape se obvykle nacházejí na standardních PC klávesnice. Na klávesnicích pro PDA a jiná zařízení, která nejsou primárně určena pro komunikaci ASCII, však běžně chybí. Řada DEC VT220 byla jednou z mála populárních klávesnic, které neměly vyhrazenou klávesu Esc, místo aby používaly jednu z kláves nad hlavní klávesnicí. V uživatelských rozhraních 70. – 80. Někdy byl klíč identifikován pomocí AltMode (pro alternativní režim). I bez vyhrazeného klíče lze kód únikového znaku vygenerovat zadáním [a současným podržením Ctrl.

Programovací a datové formáty

Mnoho moderních programovacích jazyků uvádí znak uvozovek ( ") jako oddělovač pro řetězcový literál . Zpětné lomítko ( \) escape znak obvykle nabízí dva způsoby, jak zahrnout uvozovek uvnitř řetězcovou konstantu, a to buď změnou významu uvozovky znak vložený v řetězci ( \"stane se "), nebo změnou významu sekvenci znaků, včetně hexadecimální hodnota znaku uvozovek ( \x22stane se ").

C , C ++ , Java a Ruby umožňují přesně stejné dva únikové styly zpětného lomítka. Jazyk PostScript a formát RTF společnosti Microsoft také používají únik zpětného lomítka. Citovaný tisknutelné kódování používá znaménko rovná se jako znak escape.

Adresa URL a URI používají % - únikové cesty k uvozovkám znaků se zvláštním významem, jako pro znaky jiné než ASCII. Znak ampersand ( &) může být považován za únikový znak v SGML a odvozených formátech, jako je HTML a XML .

Některé programovací jazyky také poskytují další způsoby, jak reprezentovat speciální znaky v literálech, aniž by vyžadovaly únikový znak (viz např. Kolize oddělovače ).

Komunikační protokoly

Point-to-Point Protocol (PPP) využívá 0x7D oktet ( \175nebo ASCII: }) jako znak escape. Oktet bezprostředně po třeba XORed by 0x20před tím, než přešel na vyšší úrovni protokolu. To platí jak pro 0x7Dsamotný, tak pro řídicí znak 0x7E(který se v PPP používá k označení začátku a konce rámce), když je třeba tyto oktety přenášet protokolem vyšší úrovně zapouzdřeným v PPP, jakož i pro další oktety vyjednané při je navázáno spojení. To znamená, že když chce protokol vyšší úrovně vysílat 0x7D, je přenášen jako sekvence 0x7D 0x5Da 0x7Eje přenášen jako 0x7D 0x5E.

Bourneova skořápka

V Bourne shell (sh) jsou znaky hvězdičky ( *) a otazníku ( ?) zástupné znaky rozšířené pomocí globbingu . Bez předchozího únikového znaku *se rozbalí na názvy všech souborů v pracovním adresáři , které nezačínají tečkou, pokud existují takové soubory, jinak *zůstane nerozbaleno. Abychom tedy mohli odkazovat na soubor doslovně nazvaný „*“, musí být shellu řečeno, aby jej tímto způsobem neinterpretoval, a to tak, že jej uvedeme zpětným lomítkem ( \). Tím se mění interpretace hvězdičky ( *). Porovnat:

 
rm *    # delete all files in the current directory

rm \*   # delete the file named *

Příkazový řádek Windows

Příkazového řádku interpretu Windows používá stříšky znak ( ^), aby se vyhnuli vyhrazené znaky, které mají zvláštní význam (zejména: &, |, (, ), <, >, ^). DOS příkazového řádku interpretu , ačkoli to má podobnou syntaxi, nepodporuje.

Například na příkazovém řádku systému Windows to způsobí chybu syntaxe.

echo <hello world>

vzhledem k tomu, že se zobrazí řetězec: <hello world>

echo ^<hello world^>

Windows PowerShell

V systému Windows se zpětné lomítko používá jako oddělovač cest; proto jej obecně nelze použít jako únikovou postavu. PowerShell místo toho používá backtick (`).

Například následující příkaz:

echo "`tFirst line`nNew line"

Výstup:

        First line
New line

Ostatní

Viz také

Reference

  1. ^ „Únikové sekvence znaků JavaScriptu · Mathias Bynens“ . Mathiasbynens.be . Citováno 2014-06-30 .
  2. ^ "Speciální znaky (JavaScript)" . Msdn.microsoft.com. 2014-06-20 . Citováno 2014-06-30 .
  3. ^ Bemer, Bob. „Jak Bob Bemer vynalezl sekvenci a klíč ESCAPE“ . www.bobbemer.com . Citováno 22. března 2018 .
  4. ^ Tim Hill (1998). "Windows NT Command Shell" . Technické publikování MacMillan . Citováno 2010-01-13 .
  5. ^ "about_Escape_Character" . Msdn.microsoft.com. 08.04.2014. Archivováno od originálu dne 2016-11-25 . Citováno 2016-11-24 .

externí odkazy

Veřejná doména Tento článek včlení  materiál public domain z dokumentu General Services Administration : "Federal Standard 1037C" .