Znak ucieczki - Escape character

W informatyki i telekomunikacji , charakter ucieczki jest postać , która powołuje się na alternatywną interpretację na następujących znaków w sekwencji znaków. Znak ucieczki to szczególny przypadek metaznaków . Ogólnie rzecz biorąc, ocena, czy coś ma charakter ucieczki, czy nie, zależy od kontekstu.

W dziedzinie telekomunikacji znaki ucieczki są używane do wskazania, że ​​następujące znaki są zakodowane w różny sposób. Służy do zmiany znaków kontrolnych , które w przeciwnym razie zostałyby zauważone i zastosowane przez podstawowy sprzęt telekomunikacyjny. W tym kontekście użycie znaków ucieczki jest często określane jako cytowanie .

Definicja

Znak ucieczki może nie mieć własnego znaczenia, więc wszystkie sekwencje ucieczki składają się z dwóch lub więcej znaków.

Znaki specjalne są częścią składni wielu języków programowania, formatów danych i protokołów komunikacyjnych. Dla danego alfabetu celem znak anulowania jest, aby rozpocząć sekwencje znaków (tak nazwane sekwencje specjalne ), które mają być interpretowane odmiennie od tych samych znaków występujących bez wcześniej ustalonej znakiem ucieczki.

Funkcje sekwencji ucieczki obejmują:

  • Kodowanie jednostki składniowej, takiej jak polecenia urządzenia lub dane specjalne, które nie mogą być bezpośrednio reprezentowane przez alfabet.
  • Do reprezentowania znaków, określanych jako cytowanie znaków , których nie można wpisać w bieżącym kontekście lub które miałyby niepożądaną interpretację. W tym przypadku sekwencja ucieczki jest dwuznakiem składającym się z samego znaku ucieczki i znaku „cytatu”.

Postać kontrolna

Ogólnie rzecz biorąc, znak ucieczki nie jest szczególnym przypadkiem znaków sterujących (urządzenia) ani na odwrót. Jeśli zdefiniujemy jako znaki sterujące nie- graficznej , lub jako mające szczególne znaczenie dla urządzenia wyjściowego (np drukarki lub terminala tekst ), a następnie dowolny znak ucieczki dla tego urządzenia to jedna kontrola. Ale znaki ucieczki używane w programowaniu (takie jak ukośnik odwrotny , "\") są graficzne, a zatem nie są znakami kontrolnymi. Odwrotnie, większość (ale nie wszystkie) „znaków sterujących” ASCII ma pewną funkcję kontrolną w izolacji, dlatego nie są one znakami ucieczki.

W wielu językach programowania znak ucieczki tworzy również sekwencje ucieczki, które są nazywane znakami sterującymi. Na przykład koniec wiersza ma sekwencję ucieczki \n.

Przykłady

JavaScript

JavaScript używa \(backslash) jako znaku ucieczki dla:

  • \' pojedynczy cytat
  • \" cudzysłów
  • \\ ukośnik wsteczny
  • \n Nowa linia
  • \r powrót karetki
  • \t patka
  • \b Backspace
  • \f kanał formularzy
  • \vkarta pionowa ( Internet Explorer 9 i starsze traktuje '\vjako 'vkartę pionową zamiast ( '\x0B). Jeśli problemem jest kompatybilność z różnymi przeglądarkami, użyj \x0Bzamiast \v.)
  • \0 znak null (U+0000 NULL) (tylko jeśli następny znak nie jest cyfrą dziesiętną; w przeciwnym razie jest to sekwencja ucieczki ósemkowej)
  • \xFF znak reprezentowany przez bajt szesnastkowy „FF”

Zwróć uwagę, że znaki ucieczki \vi \0nie są dozwolone w ciągach JSON.

Znak ucieczki ASCII

Znak „ wyjściowy ” ASCII ( ósemkowy : \033, szesnastkowy : \x1B, lub ^[, lub dziesiętny, 27) jest używany w wielu urządzeniach wyjściowych do rozpoczynania serii znaków zwanych sekwencją kontrolną lub sekwencją specjalną. Zazwyczaj znak ucieczki był wysyłany jako pierwszy w takiej sekwencji, aby ostrzec urządzenie, że następujące znaki mają być interpretowane jako sekwencja kontrolna, a nie jako zwykłe znaki, a następnie jeden lub więcej znaków, aby określić szczegółową akcję, po czym urządzenie wróciłoby do normalnego interpretowania znaków. Na przykład sekwencja ^[, po której następują znaki drukowalne [2;10H, spowoduje, że terminal DEC VT102 przesunie kursor do dziesiątej komórki w drugim wierszu ekranu. Zostało to później rozwinięte do kodów ucieczki ANSI objętych standardem ANSI X3.64. Znak zmiany znaczenia uruchamia również każdą sekwencję poleceń w języku poleceń drukarki Hewlett Packard .

Wczesne odniesienie do terminu „znak ucieczki” można znaleźć w publikacjach technicznych IBM Boba Bemera , któremu przypisuje się wynalezienie tego mechanizmu podczas pracy nad zestawem znaków ASCII .

Klawisz Escape znajduje się zwykle na standardowych klawiaturach PC. Jednak często nie występuje w klawiaturach urządzeń PDA i innych urządzeń, które nie są przeznaczone głównie do komunikacji ASCII. Seria DEC VT220 była jedną z niewielu popularnych klawiatur, które nie miały dedykowanego klawisza Esc, zamiast używać jednego z klawiszy nad główną klawiaturą. W interfejsach użytkownika w latach 70. i 80. nie było niczym niezwykłym używanie tego klawisza jako znaku ucieczki, ale we współczesnych komputerach stacjonarnych takie użycie jest porzucane. Czasami klucz był identyfikowany z AltMode (dla trybu alternatywnego). Nawet bez dedykowanego klawisza kod znaku ucieczki można wygenerować przez wpisanie [przy jednoczesnym przytrzymaniu Ctrl.

Programowanie i formaty danych

Wiele nowoczesnych języków programowania określa znak podwójnego cudzysłowu ( ") jako ogranicznik dla literału ciągu . Znak zmiany znaczenia odwrotnego ukośnika ( \) zapewnia zwykle dwa sposoby umieszczania podwójnych cudzysłowów w literale ciągu, poprzez modyfikację znaczenia znaku podwójnego cudzysłowu osadzonego w ciągu ( \"staje się ") lub przez modyfikowanie znaczenia sekwencji znaków, w tym wartość szesnastkowa znaku podwójnego cudzysłowu ( \x22staje się ").

C , C++ , Java i Ruby umożliwiają dokładnie te same dwa style ucieczki odwrotnym ukośnikiem. Język PostScript i Microsoft Rich Text Format również używają znaków ucieczki odwrotnego ukośnika. Quoted-printable kodowania wykorzystuje znak equals jako znak ucieczki.

URL i URI korzystanie % - ucieka zacytować znaki o specjalnym znaczeniu, jak dla znaków spoza ASCII. Znak ampersand ( &) może być uważany za znak zmiany znaczenia w SGML i formatach pochodnych , takich jak HTML i XML .

Niektóre języki programowania udostępniają również inne sposoby reprezentowania znaków specjalnych w literałach, bez konieczności stosowania znaku zmiany znaczenia (patrz np. kolizja ograniczników ).

Protokoły komunikacyjne

Protokół Point-to-Point (PPP) używa 0x7D oktetu ( \175lub ASCII: }) jako znaku ucieczki. Oktetu bezpośrednio po należy XORed przez 0x20przed przekazywane protokołem wyższego poziomu. Dotyczy to zarówno 0x7Dsamego siebie, jak i znaku kontrolnego 0x7E(który jest używany w PPP do oznaczania początku i końca ramki), gdy te oktety muszą być przesyłane przez protokół wyższego poziomu hermetyzowany przez PPP, jak również inne oktety negocjowane, gdy połączenie jest ustanowione. Oznacza to, że gdy protokół wyższego poziomu chce przesłać 0x7D, jest przesyłany jako sekwencja 0x7D 0x5Di 0x7Ejest przesyłany jako 0x7D 0x5E.

Muszla Bourne'a

W powłoce Bourne'a (sh) znaki gwiazdki ( *) i znaku zapytania ( ?) są znakami wieloznacznymi rozwiniętymi przez globbing . Bez poprzedzającego znaku ucieczki, an *rozwinie się do nazw wszystkich plików w katalogu roboczym , które nie zaczynają się od kropki wtedy i tylko wtedy, gdy istnieją takie pliki, w przeciwnym razie *pozostaje nierozwinięte. Tak więc, aby odwołać się do pliku zwanego dosłownie "*", należy powiedzieć powłoce, aby nie interpretowała go w ten sposób, poprzedzając go odwrotnym ukośnikiem ( \). Zmienia to interpretację gwiazdki ( *). Porównywać:

 
rm *    # delete all files in the current directory

rm \*   # delete the file named *

Wiersz polecenia systemu Windows

Wiersza polecenia interpreter systemu Windows używa daszka charakter ( ^), aby uciec znaków zastrzeżonych, które mają szczególne znaczenie (w szczególności: &, |, (, ), <, >, ^). DOS wiersza polecenia interpreter , choć ma podobną składnię, nie obsługuje tej funkcji.

Na przykład w wierszu polecenia systemu Windows spowoduje to błąd składni.

echo <hello world>

podczas gdy to wygeneruje ciąg: <hello world>

echo ^<hello world^>

Windows PowerShell

W systemie Windows ukośnik odwrotny jest używany jako separator ścieżki; dlatego generalnie nie może być używany jako znak ucieczki. PowerShell zamiast tego używa backtick ( ` ).

Na przykład następujące polecenie:

echo "`tFirst line`nNew line"

Wygeneruje:

        First line
New line

Inni

Zobacz też

Bibliografia

  1. ^ "Sekwencje ucieczki znaków JavaScript · Mathias Bynens" . Mathiasbynens.be . Pobrano 2014-06-30 .
  2. ^ „Znaki specjalne (JavaScript)” . Msdn.microsoft.com. 2014-06-20 . Pobrano 2014-06-30 .
  3. ^ Bemer, Bob. „Jak Bob Bemer wynalazł sekwencję i klucz ESCAPE” . www.bobbemer.com . Źródło 22 marca 2018 .
  4. ^ Tim Hill (1998). „Powłoka poleceń systemu Windows NT” . Wydawnictwo techniczne MacMillan . Źródło 2010-01-13 .
  5. ^ "O_Escape_Characters" . Msdn.microsoft.com. 2014-05-08. Zarchiwizowane od oryginału w dniu 2016-11-25 . Źródło 2016-11-24 .

Linki zewnętrzne

Domena publiczna Ten artykuł zawiera  materiał z domeny publicznej z dokumentu General Services Administration : „Federal Standard 1037C” .