Побег персонаж
Эта статья нуждается в дополнительных цитатах для проверки . ( апрель 2010 г. ) |
В вычислительной технике и телекоммуникациях — escape-символ это символ , который вызывает альтернативную интерпретацию следующих символов в последовательности символов. escape-символ — это частный случай метасимволов . Как правило, решение о том, является ли что-то escape-символом или нет, зависит от контекста.
В сфере телекоммуникаций escape-символы используются для обозначения того, что следующие символы кодируются по-разному. Это используется для изменения управляющих символов , которые в противном случае были бы замечены и обработаны базовым телекоммуникационным оборудованием, например, недопустимые символы . В этом контексте использование escape-символов часто называют цитированием .
Определение [ править ]
escape-символ может не иметь собственного значения, поэтому все escape-последовательности состоят из двух или более символов.
Escape-символы являются частью синтаксиса многих языков программирования, форматов данных и протоколов связи. Для данного алфавита целью escape-символа является начало последовательности символов (так называемых escape-последовательностей ), которые должны интерпретироваться иначе, чем те же символы, встречающиеся без префиксного escape-символа.
К функциям escape-последовательностей относятся:
- Для кодирования синтаксического объекта, такого как команды устройства или специальные данные, которые невозможно представить напрямую с помощью алфавита.
- Для представления символов, называемых кавычками символов , которые невозможно ввести в текущем контексте или которые могут иметь нежелательную интерпретацию. В этом случае escape-последовательность представляет собой орграф, состоящий из самого escape-символа и символа, заключенного в кавычки.
Управляющий персонаж [ править ]
Как правило, escape-символ не является частным случаем управляющих символов (устройства) и наоборот. Если мы определяем управляющие символы как неграфические или имеющие специальное значение для устройства вывода (например, принтера или текстового терминала ), то любой escape-символ для этого устройства является управляющим. Но escape-символы, используемые в программировании (например, обратная косая черта , "\"), являются графическими и, следовательно, не являются управляющими символами. И наоборот, большинство (но не все) «управляющих символов» ASCII имеют изолированную функцию управления, поэтому они не являются escape-символами.
Во многих языках программирования escape-символ также образует escape-последовательности, которые называются управляющими символами. Например, разрыв строки имеет escape-последовательность вида \n
.
Примеры [ править ]
JavaScript [ править ]
JavaScript использует \
(обратная косая черта) в качестве escape-символа для: [1] [2]
\'
одинарная кавычка\"
двойная кавычка\\
обратная косая черта\n
новая линия\r
возврат каретки\t
вкладка\b
возврат назад\f
подача формы\v
вертикальная вкладка ( в Internet Explorer 9 и более ранних версиях)'\v
как'v
вместо вертикальной табуляции ('\x0B
). Если кросс-браузерная совместимость вызывает беспокойство, используйте\x0B
вместо\v
.)\0
нулевой символ (U+0000 NULL) (только если следующий символ не является десятичной цифрой; в противном случае это восьмеричная escape-последовательность)\xFF
символ, представленный шестнадцатеричным байтом «FF».
The \v
и \0
escape-символы не допускаются в строках JSON.
Пример кода:
console.log("Using \\n \nWill shift the characters after \\n one row down")
console.log("Using \\t \twill shift the characters after \\t one tab length to the right")
console.log("Using \\r \rWill imitate a carriage return, which means shifting to the start of the row") // can be used to clear the screen on some terminals. Windows uses \r\n instead of \n alone
escape-символ ASCII [ править ]
Escape-символ ASCII ( восьмеричный : \033
, шестнадцатеричный : \x1B
, или, в десятичном виде, 27
, также представленный последовательностями ^[
или \e
) используется во многих устройствах вывода для начала последовательности символов, называемой управляющей последовательностью или escape-последовательностью. Обычно escape-символ отправлялся первым в такой последовательности, чтобы предупредить устройство о том, что следующие символы следует интерпретировать как управляющую последовательность, а не как простые символы, затем следовали один или несколько символов, чтобы указать какое-то подробное действие, после чего устройство вернется к нормальной интерпретации символов. Например, последовательность ^[
, за которым следуют печатные символы [2;10H
, приведет к тому, что терминал VT102 Digital Equipment Corporation (DEC) переместит курсор в 10-ю ячейку 2-й строки экрана. Позже это было развито в escape-коды ANSI, включенные в стандарт ANSI X3.64. Escape-символ также запускает каждую последовательность команд на языке команд принтера Hewlett-Packard .
Раннее упоминание термина «escape-символ» можно найти в технических публикациях IBM Боба Бемера , которому приписывают изобретение этого механизма во время его работы над набором символов ASCII . [3]
Клавиша Escape обычно имеется на стандартных клавиатурах ПК. Однако он обычно отсутствует в клавиатурах КПК и других устройствах, не предназначенных в первую очередь для связи ASCII. Серия DEC VT220 была одной из немногих популярных клавиатур, у которых не было специальной клавиши Esc вместо использования одной из клавиш над основной клавиатурой. В пользовательских интерфейсах 1970–1980-х годов эта клавиша нередко использовалась в качестве escape-символа, но в современных настольных компьютерах от такого использования отказались. Иногда ключ идентифицировался с AltMode (для альтернативного режима). Даже при отсутствии специальной клавиши код escape-символа можно сгенерировать, набрав [
одновременно удерживая Ctrl.
Форматы программирования и данных [ править ]
Многие современные языки программирования определяют символ двойной кавычки ( "
) в качестве разделителя строкового литерала . обратная косая черта ( \
) escape-символ обычно предоставляет два способа включения двойных кавычек в строковый литерал: либо путем изменения значения символа двойной кавычки, встроенного в строку ( \"
становится "
) или изменив значение последовательности символов, включая шестнадцатеричное значение символа двойной кавычки ( \x22
становится "
).
C , C++ , Java и Ruby допускают одни и те же два стиля экранирования обратной косой черты. Язык PostScript и Microsoft Rich Text Format также используют обратную косую черту. Кодировка quote-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
.
Оболочка Борна [ править ]
В оболочке Bourne (sh) звездочка ( *
) и знак вопроса ( ?
) символы являются подстановочными знаками, расширенными посредством подстановки . Без предшествующего escape-символа, *
будет расширен до имен всех файлов в рабочем каталоге , которые не начинаются с точки, тогда и только тогда, когда такие файлы существуют, в противном случае *
остается нерасширенным. Таким образом, чтобы ссылаться на файл с буквальным именем «*», необходимо указать оболочке не интерпретировать его таким образом, поставив перед ним обратную косую черту ( \
). Это изменяет интерпретацию звездочки ( *
). Сравнивать:
rm * # delete all files in the current directory
rm \* # delete the file named *
|
Командная строка Windows [ править ]
Интерпретатор командной строки Windows использует символ каретки ( ^
), чтобы экранировать зарезервированные символы, имеющие особое значение (в частности: &
, |
, (
, )
, <
, >
, ^
). [4] Интерпретатор командной строки DOS , хотя и имеет схожий синтаксис, не поддерживает это.
Например, в командной строке Windows это приведет к синтаксической ошибке.
C:\>echo <hello world>
The syntax of the command is incorrect.
тогда как это выведет строку: <hello world>
C:\>echo ^<hello world^>
<hello world>
Windows PowerShell [ править ]
В Windows обратная косая черта используется как разделитель пути; поэтому его обычно нельзя использовать в качестве escape-символа. PowerShell использует обратную апострофу [5] ( ` ) вместо этого.
Например, следующая команда:
PS C:\> echo "`tFirst line`nNew line"
First line
New line
Другие [ править ]
- Quoted-printable , который кодирует 8-битные данные в 7-битные данные с ограниченной длиной строки, использует знак равенства (
=
) в качестве escape-символа.
См. также [ править ]
- Клавиша AltGr используется для ввода символов, необычных для языковой раскладки клавиатуры.
- Escape-последовательности в C
- Синдром наклоненной зубочистки
- Вложенная цитата
- Строппинг (синтаксис) – в некоторых соглашениях ведущий символ (например, апостроф) действует как escape-символ.
Ссылки [ править ]
- ^ «Escape-последовательности символов JavaScript» . Матиас Биненс. 21 декабря 2011 года . Проверено 30 июня 2014 г.
- ^ «Специальные символы (JavaScript)» . Сеть разработчиков Microsoft. Архивировано из оригинала 14 декабря 2014 года . Проверено 30 июня 2014 г.
- ^ Бемер, Боб (25 октября 2003 г.). «Как Боб Бемер изобрел последовательность и ключ ESCAPE» . Боб Бемер . Архивировано из оригинала 4 января 2018 года . Проверено 22 марта 2018 г.
- ^ Тим Хилл (1998). «Командная оболочка Windows NT» . Microsoft Learn . Техническое издательство MacMillan . Проверено 13 января 2010 г.
- ^ "about_Escape_Characters" . Сеть разработчиков Microsoft. 08.05.2014. Архивировано из оригинала 25 ноября 2016 г. Проверено 24 ноября 2016 г.
Внешние ссылки [ править ]
- Этот могущественный персонаж ESCAPE — ключ и последовательности, заархивированные 25 марта 2016 г. в Wayback Machine — Боб Бемер
В этой статье использованы общедоступные материалы из Федеральный стандарт 1037C . Управление общего обслуживания . Архивировано из оригинала 22 января 2022 г.