В вычислениях и телекоммуникациях, escape-символ - это символ , который вызывает альтернативную интерпретацию следующих символов в последовательности символов. Управляющий символ - это частный случай метасимволов . Как правило, суждение о том, является ли что-то экранирующим или нет, зависит от контекста.
escape-символ может не иметь собственного значения, поэтому все escape-последовательности состоят из двух или более символов.
escape-символы являются частью синтаксиса для многих языков программирования, форматов данных и протоколов связи. Для данного алфавита цель escape-символа состоит в том, чтобы начать последовательность символов (так называемые escape-последовательности ), которые должны интерпретироваться иначе, чем те же символы, встречающиеся без префикса escape-символа.
Функции управляющих последовательностей включают в себя:
Как правило, escape-символ не является частным случаем of (device) управляющие символы, и наоборот. Если мы определяем управляющие символы как не графику или как имеющие особое значение для устройства вывода (например, принтер или текстовый терминал ), то любой escape-символ для это устройство контрольное. Но escape-символы, используемые в программировании (такие как обратная косая черта, «\»), являются графическими, поэтому не являются управляющими символами. И наоборот, большинство (но не все) «управляющих символов» ASCII имеют отдельные управляющие функции, поэтому они не являются escape-символами.
Во многих языках программирования escape-символ также формирует некоторые escape-последовательности, которые называются управляющими символами. Например, разрыв строки имеет escape-последовательность \n
.
JavaScript использует \
(обратная косая черта) в качестве escape-символа. for:
\'
одинарная кавычка\"
двойная кавычка\\
обратная косая черта\n
новая строка\r
возврат каретки\t
вкладка\b
backspace\f
form feed\v
вертикальная вкладка (Internet Explorer 9 и более ранние версии рассматривают '\ v
как ' v
вместо вертикальной табуляции ('\ x0B
). Если кроссбраузерная совместимость вызывает беспокойство используйте \ x0B
вместо \v
.)\0
нулевого символа (U + 0000 NULL) (только если следующий символ не является десятичной цифрой; иначе это восьмеричная escape-последовательность)\ xFF
символ, представленный шестнадцатеричным байтом "FF"Обратите внимание, что escape-символы \ v
и \ 0
не допускаются в строках JSON.
escape-символ ASCII (восьмеричный : \ 033
, шестнадцатеричный : \ x1B
или ^ [
, или, в десятичной форме, 27
) используется во многих устройствах вывода для запуска серии вызываемых символов. d последовательность управления или escape-последовательность. Обычно escape-символ отправляется первым в такой последовательности, чтобы предупредить устройство о том, что следующие символы должны интерпретироваться как управляющая последовательность, а не как простые символы, затем следуют один или несколько символов, чтобы указать какое-либо подробное действие, после чего устройство вернется к обычной интерпретации символов. Например, последовательность ^ [
, за которой следуют печатаемые символы [2; 10H
, приведет к тому, что терминал DEC VT102 будет переместите его курсор в 10-ю ячейку 2-й строки экрана. Позже это было развито в escape-коды ANSI, охватываемые стандартом ANSI X3.64. Управляющий символ также запускает каждую последовательность команд в Hewlett Packard Язык команд принтера.
Раннее упоминание термина «escape-символ» можно найти в Бобе Бемере. Технические публикации IBM, которому приписывают изобретение этого механизма во время его работы над набором символов ASCII.
Escape key обычно находится на стандартных клавиатурах ПК. Тем не менее, он обычно отсутствует на клавиатурах КПК и других устройствах, не предназначенных в первую очередь для связи в формате ASCII. Серия DEC VT220 была одной из немногих популярных клавиатур, в которых не было специальной клавиши Esc вместо одной из клавиш над основной клавиатурой. В пользовательских интерфейсах 1970–1980-х годов нередко было использовать эту клавишу в качестве escape-символа, но в современных настольных компьютерах такое использование не используется. Иногда ключ обозначался (для альтернативного режима). Даже без специальной клавиши код escape-символа можно было сгенерировать, набрав [
, одновременно удерживая Ctrl .
Многие современные языки программирования указывают символ двойных кавычек ("
) как разделитель для строкового литерала . обратная косая черта (\
) escape-символ обычно предоставляет два способа включения двойных кавычек в строковый литерал: либо путем изменения значения символа двойных кавычек, встроенного в строку (\ "
становится "
), либо путем изменения значения последовательность символов, включая шестнадцатеричное значение символа двойных кавычек (\ x22
становится "
).
C, C ++, Java и Ruby - все допускают одинаковые два стиля escape-перехода с обратной косой чертой. Язык PostScript и Microsoft Rich Text Format также используют escape-символы обратной косой черты. Кодировка quoted-printable использует знак равно в качестве escape-символа.
URL и URI используют % -escape-символы для заключения в кавычки символов со специальным значением, как для символов, отличных от ASCII. Символ амперсанд () можно рассматривать как escape-символ в SGML и производных форматах, таких как HTML и XML.
. Некоторые языки программирования также предоставляют другие способы представления специальных символов в литералах, без необходимости использования escape-символа (см., например, разделитель коллизии ).
Протокол точка-точка (PPP) использует октет 0x7D
(\ 175
или ASCII: }
) как escape-символ. Сразу за октетом следует выполнить XOR с помощью 0x20
перед передачей в протокол более высокого уровня. Это применяется как к самому 0x7D
, так и к управляющему символу 0x7E
(который используется в PPP для обозначения начала и конца кадра), когда эти октеты должны быть переданы вышестоящим протокол уровня, инкапсулированный PPP, а также другие октеты, согласованные при установлении соединения. То есть, когда протокол более высокого уровня желает передать 0x7D
, он передается как последовательность 0x7D 0x5D
, а 0x7E
передается как 0x7D 0x5E
.
В оболочке Борна (sh) символы звездочки (*
) и вопросительный знак (?
) являются символами подстановки. раскрывается с помощью подстановки. Без предшествующего escape-символа *
будет расширяться до имен всех файлов в рабочем каталоге, которые не начинаются с точки тогда и только тогда, когда там являются такими файлами, иначе *
останется нерасширенным. Таким образом, чтобы обратиться к файлу с буквальным названием «*», оболочке необходимо указать, чтобы он не интерпретировал его таким образом, поставив перед ним обратную косую черту (\
). Это изменяет интерпретацию звездочки (*
). Сравните:
rm * # удалить все файлы в текущем каталоге rm \ * # удалить файл с именем * |
Интерпретатор командной строки Windows использует символ вставки (^
) для экранирования зарезервированных символов, имеющих особое значение (в частности: ,
|
, (
, )
, <
, >
, ^
). Интерпретатор командной строки DOS , хотя и поддерживает аналогичный синтаксис, не поддерживает этого.
Например, в командной строке Windows это приведет к синтаксической ошибке.
echo
, тогда как это будет выводить строку:
echo ^
В Windows обратная косая черта используется в качестве разделителя пути; поэтому его обычно нельзя использовать как escape-символ. PowerShell использует вместо него обратную кавычку (`).
Например, следующая команда:
echo "` tFirst line`nNew line "
выведет:
Первая строка Новая строка
=
) в качестве escape-символа.Эта статья включает материалы общественного достояния из документа Управления общих служб : «Федеральный стандарт 1037C».