Эскейп-персонаж - Escape character
В вычислительной и телекоммуникационной , экранирующий символ является символ , который вызывает альтернативную интерпретацию на следующих символов в последовательности символов. Управляющий символ - это частный случай метасимволов . Как правило, суждение о том, является ли что-то экранирующим или нет, зависит от контекста.
В телекоммуникационном поле escape-символы используются, чтобы указать, что следующие символы кодируются по-другому. Это используется для изменения управляющих символов , которые в противном случае были бы замечены и отреагировали на соответствующее телекоммуникационное оборудование. В этом контексте использование escape-символов часто называют цитированием .
Определение
Управляющий символ может не иметь собственного значения, поэтому все escape-последовательности состоят из двух или более символов.
Escape-символы являются частью синтаксиса многих языков программирования, форматов данных и протоколов связи. Для данного алфавита цель escape-символа - запускать последовательности символов (так называемые escape-последовательности ), которые должны интерпретироваться иначе, чем те же символы, встречающиеся без префикса escape-символа.
Функции escape-последовательностей включают:
- Для кодирования синтаксической сущности, такой как команды устройства или специальные данные, которые не могут быть напрямую представлены алфавитом.
- Для представления символов, называемых кавычками , которые нельзя ввести в текущем контексте или которые будут иметь нежелательную интерпретацию. В этом случае escape-последовательность - это орграф, состоящий из самого escape-символа и символа «в кавычках».
Управляющий персонаж
Как правило, escape-символ не является частным случаем управляющих символов (устройства) и наоборот. Если мы определяем управляющие символы , как не - графических , или как имеющие особое значение для устройства вывода (например , принтер или текстовый терминал ) , то любой управляющий символ для этого устройства является контроль один. Но escape-символы, используемые в программировании (например, обратная косая черта , «\»), являются графическими, поэтому не являются управляющими символами. И наоборот, большинство (но не все) «управляющих символов» ASCII имеют отдельные управляющие функции, поэтому они не являются управляющими символами.
Во многих языках программирования escape-символ также формирует некоторые escape-последовательности, которые называются управляющими символами. Например, разрыв строки имеет escape-последовательность \n
.
Примеры
JavaScript
JavaScript использует \
(обратную косую черту) как escape-символ для:
-
\'
одинарная кавычка -
\"
двойная кавычка -
\\
обратная косая черта -
\n
новая линия -
\r
возврат каретки -
\t
вкладка -
\b
Backspace -
\f
подача формы -
\v
вертикальная табуляция ( Internet Explorer 9 и более ранние версии рассматривают ее'\v
как'v
вертикальную табуляцию ('\x0B
). Если кроссбраузерная совместимость вызывает беспокойство, используйте\x0B
вместо\v
.) -
\0
нулевой символ (U + 0000 NULL) (только если следующий символ не является десятичной цифрой; иначе это восьмеричная escape-последовательность) -
\xFF
символ, представленный шестнадцатеричным байтом "FF"
Обратите внимание , что \v
и \0
ускользает не допускаются в строках JSON.
Escape-символ ASCII
ASCII «избежать» символов ( восьмеричный : \033
, шестнадцатеричный : \x1B
или ^[
, или, в десятичной системе счисления, 27
) используются во многих устройствах вывода , чтобы начать серию символов , называемых последовательностью управления или избежать последовательностей. Обычно escape-символ отправляется первым в такой последовательности, чтобы предупредить устройство о том, что следующие символы должны интерпретироваться как управляющая последовательность, а не как простые символы, затем следует один или несколько символов, чтобы указать какое-либо подробное действие, после чего устройство вернется к нормальной интерпретации символов. Например, последовательность ^[
, за которой следуют печатаемые символы [2;10H
, заставит терминал DEC VT102 переместить курсор в 10-ю ячейку 2-й строки экрана. Позже это было преобразовано в escape-коды ANSI, охватываемые стандартом ANSI X3.64. Управляющий символ также запускает каждую последовательность команд на языке команд принтера Hewlett Packard .
Раннее упоминание термина «escape-символ» можно найти в технических публикациях IBM Боба Бемера , которому приписывают изобретение этого механизма во время его работы над набором символов ASCII .
Ключ побега обычно находятся на стандартной клавиатуре ПК. Однако он обычно отсутствует на клавиатурах КПК и других устройствах, не предназначенных в первую очередь для связи в кодировке ASCII. Серия DEC VT220 была одной из немногих популярных клавиатур, в которых не было выделенной клавиши Esc вместо использования одной из клавиш над основной клавиатурой. В пользовательских интерфейсах 1970–1980-х годов нередко использовалась эта клавиша в качестве escape-символа, но в современных настольных компьютерах такое использование не используется. Иногда ключ идентифицировался с помощью AltMode (для альтернативного режима). Даже без выделенной клавиши код escape-символа можно было сгенерировать путем ввода [
, одновременно удерживая нажатой клавишу Ctrl.
Программирование и форматы данных
Многие современные языки программирования указать двойную кавычку ( "
) в качестве разделителя для строки литерала . Управляющий символ обратной косой черты ( \
) обычно предоставляет два способа включения двойных кавычек в строковый литерал: либо путем изменения значения символа двойной кавычки, встроенного в строку ( \"
становится "
), либо путем изменения значения последовательности символов, включая шестнадцатеричное значение символа двойной кавычки ( \x22
становится "
).
C , C ++ , Java и Ruby допускают одинаковые два стиля экранирования с обратной косой чертой. В языке PostScript и Microsoft Rich Text Format также используются символы обратной косой черты. В кодировке с возможностью печати в кавычках в качестве escape-символа используется знак равенства .
URL-адрес и URI используют % - escape- символы, чтобы заключить в кавычки символы со специальным значением, как для символов, отличных от ASCII. Символ амперсанда ( &
) можно рассматривать как escape-символ в SGML и производных форматах, таких как HTML и XML .
Некоторые языки программирования также предоставляют другие способы представления специальных символов в литералах, не требуя escape-символа (см., Например, конфликт разделителей ).
Протоколы связи
Протокол Point-to-Point Protocol (PPP) использует 0x7D
октет ( \175
или ASCII :) }
в качестве escape-символа. Октет сразу же после следует операция XOR с 0x20
перед передачей на более высокий уровень протокола. Это применяется как к 0x7D
самому себе, так и к управляющему символу 0x7E
(который используется в PPP для обозначения начала и конца кадра), когда эти октеты должны быть переданы протоколом более высокого уровня, инкапсулированным PPP, а также другие октеты, согласованные, когда ссылка установлена. То есть, когда протокол более высокого уровня желает передать 0x7D
, он передается как последовательность 0x7D 0x5D
, а 0x7E
передается как 0x7D 0x5E
.
Оболочка Борна
В оболочке Bourne (sh) символы звездочки ( *
) и вопросительного знака ( ?
) являются подстановочными знаками, расширяемыми с помощью подстановки символов . Без предшествующего escape-символа an *
будет расширяться до имен всех файлов в рабочем каталоге, которые не начинаются с точки, тогда и только тогда, когда такие файлы есть, в противном случае *
остается нерасширенным. Таким образом, чтобы обратиться к файлу с буквальным названием «*», оболочке нужно указать, чтобы она не интерпретировала его таким образом, поставив перед ним обратную косую черту ( \
). Это изменяет интерпретацию звездочки ( *
). Сравнивать:
rm * # delete all files in the current directory
rm \* # delete the file named *
|
Командная строка Windows
Интерпретатор командной строки Windows , использует каретку символ ( ^
) , чтобы избежать зарезервированные символы, имеющие специальное значение (в частности: &
, |
, (
, )
, <
, >
, ^
). Интерпретатор командной строки DOS , хотя и имеет похожий синтаксис, не поддерживает это.
Например, в командной строке Windows это приведет к синтаксической ошибке.
echo <hello world>
тогда как это выведет строку: <hello world>
echo ^<hello world^>
Windows PowerShell
В Windows обратная косая черта используется как разделитель пути; поэтому его обычно нельзя использовать как escape-символ. Вместо этого PowerShell использует обратную кавычку (`).
Например, следующая команда:
echo "`tFirst line`nNew line"
Выведет:
First line
New line
Другие
-
Quoted-printable , который кодирует 8-битные данные в 7-битные данные с ограниченной длиной строки, использует знак равенства (
=
) в качестве escape-символа.
Смотрите также
- Клавиша AltGr используется для ввода символов, необычных для локали раскладки клавиатуры.
- Escape-последовательности в C
- Синдром опрокидывания зубочистки
- Строппинг (синтаксис) - в некоторых соглашениях ведущий символ (например, апостроф) функционирует как escape-символ.
использованная литература
- ^ "Escape-последовательности символов JavaScript · Матиас Биненс" . Mathiasbynens.be . Проверено 30 июня 2014 .
- ^ «Специальные символы (JavaScript)» . Msdn.microsoft.com. 2014-06-20 . Проверено 30 июня 2014 .
- ^ Бемер, Боб. «Как Боб Бемер изобрел последовательность и ключ ESCAPE» . www.bobbemer.com . Проверено 22 марта 2018 .
- ^ Тим Хилл (1998). «Командная оболочка Windows NT» . Техническое издательство MacMillan . Проверено 13 января 2010 .
- ^ "about_Escape_Characters" . Msdn.microsoft.com. 2014-05-08. Архивировано из оригинала на 2016-11-25 . Проверено 24 ноября 2016 .
внешние ссылки
Эта статья включает материалы, являющиеся общественным достоянием, из документа Управления общих служб : «Федеральный стандарт 1037C» .