stringtranslate.com

Escape-символ

В вычислительной технике и телекоммуникациях экранирующий символ — это символ , который вызывает альтернативную интерпретацию следующих символов в последовательности символов. Экранирующий символ — это частный случай метасимволов . Как правило, суждение о том, является ли что-либо экранирующим символом или нет, зависит от контекста.

В области телекоммуникаций экранирующие символы используются для указания того, что следующие символы закодированы по-другому. Это используется для изменения управляющих символов , которые в противном случае были бы замечены и обработаны базовым телекоммуникационным оборудованием, например, недопустимые символы . В этом контексте использование экранирующих символов часто называют цитированием .

Определение

Управляющий символ может не иметь собственного значения, поэтому все управляющие последовательности состоят из двух или более символов.

Символы экранирования являются частью синтаксиса многих языков программирования, форматов данных и протоколов связи. Для заданного алфавита целью символа экранирования является начало последовательности символов (так называемых escape-последовательностей ), которые должны интерпретироваться иначе, чем те же символы, встречающиеся без префиксного символа экранирования.

Функции управляющих последовательностей включают в себя:

Управляющий символ

В общем, escape-символ не является частным случаем управляющих символов (устройства) , и наоборот. Если мы определяем управляющие символы как неграфические или имеющие особое значение для устройства вывода (например, принтера или текстового терминала ), то любой escape-символ для этого устройства является управляющим. Но escape-символы, используемые в программировании (например, обратная косая черта , "\"), являются графическими, следовательно, не являются управляющими символами. И наоборот, большинство (но не все) "управляющих символов" ASCII имеют некоторую изолированную управляющую функцию, поэтому они не являются escape-символами.

Во многих языках программирования escape-символ также формирует некоторые escape-последовательности, которые называются управляющими символами. Например, разрыв строки имеет escape-последовательность \n.

Примеры

JavaScript

JavaScript использует \(обратную косую черту) в качестве экранирующего символа для: [1] [2]

В строках JSON экранированные символы \vи \0не допускаются.

Пример кода:

console . log ( "Использование \\n \nСдвинет символы после \\n на одну строку вниз" ) console . log ( "Использование \\t \tСдвинет символы после \\t на одну длину табуляции вправо" ) console . log ( "Использование \\r \rИмитирует возврат каретки, что означает сдвиг в начало строки" ) // может использоваться для очистки экрана на некоторых терминалах. Windows использует \r\n вместо \n отдельно 

Экранированный символ 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 .

Раннее упоминание термина «экранирующий символ» можно найти в технических публикациях IBM Боба Бемера , которому приписывают изобретение этого механизма во время его работы над набором символов ASCII . [3]

Клавиша Escape обычно находится на стандартных клавиатурах ПК. Однако она обычно отсутствует на клавиатурах для КПК и других устройств, не предназначенных в первую очередь для связи ASCII. Серия DEC VT220 была одной из немногих популярных клавиатур, не имевших выделенной клавиши Esc, вместо этого использовалась одна из клавиш над основной клавиатурой. В пользовательских интерфейсах 1970–1980-х годов было не редкостью использовать эту клавишу в качестве символа escape, но в современных настольных компьютерах такое использование исключено. Иногда клавиша обозначалась как AltMode (для альтернативного режима). Даже при отсутствии выделенной клавиши код символа escape можно было сгенерировать, набрав [и одновременно удерживая Ctrl.

Программирование и форматы данных

Во многих современных языках программирования символ двойной кавычки ( ") указывается как разделитель для строкового литерала . Экранирующий символ обратной косой черты ( \) обычно предоставляет два способа включения двойных кавычек в строковый литерал, либо изменяя значение символа двойной кавычки, встроенного в строку ( \"становится "), либо изменяя значение последовательности символов, включая шестнадцатеричное значение символа двойной кавычки ( \x22становится ").

C , C++ , Java и Ruby допускают абсолютно одинаковые два стиля экранирования с обратной косой чертой. Язык PostScript и Microsoft Rich Text Format также используют экранирование с обратной косой чертой. Кодировка quote-printable использует знак равенства в качестве экранирующего символа.

URL и URI используют % - экранирования для кавычек символов со специальным значением, как и для не-ASCII символов. Символ амперсанда ( &) может рассматриваться как экранирующий символ в SGML и производных форматах, таких как HTML и XML .

Некоторые языки программирования также предоставляют другие способы представления специальных символов в литералах, не требующие экранирующего символа (см., например, столкновение разделителей ).

Протоколы связи

Протокол точка-точка (PPP) использует 0x7D октет ( \175, или ASCII: }) в качестве экранирующего символа. Октет, следующий сразу за ним, должен быть подвергнут операции XOR с , 0x20прежде чем будет передан протоколу более высокого уровня. Это применяется как к 0x7Dнему самому, так и к управляющему символу 0x7E(который используется в PPP для обозначения начала и конца кадра), когда эти октеты должны быть переданы протоколом более высокого уровня, инкапсулированным PPP, а также к другим октетам, согласованным при установлении соединения. То есть, когда протокол более высокого уровня хочет передать 0x7D, он передается как последовательность 0x7D 0x5Dи 0x7Eпередается как 0x7D 0x5E.

оболочка Борна

В оболочке Bourne (sh) символы звездочка ( *) и вопросительный знак ( ?) являются подстановочными символами, расширяемыми посредством подстановки . Без предшествующего экранирующего символа an *будет расширяться до имен всех файлов в рабочем каталоге , которые не начинаются с точки, тогда и только тогда, когда такие файлы есть, в противном случае *остается нераскрытым. Таким образом, чтобы сослаться на файл, буквально названный "*", оболочке нужно указать не интерпретировать его таким образом, поставив перед ним обратную косую черту ( \). Это изменяет интерпретацию звездочки ( *). Сравните:

Командная строка Windows

Интерпретатор командной строки Windows использует символ вставки ( ^) для экранирования зарезервированных символов, имеющих особое значение (в частности: &, |, (, ), <, >, ^). [4] Интерпретатор командной строки DOS , хотя и имеет похожий синтаксис, не поддерживает его.

Например, в командной строке Windows это приведет к синтаксической ошибке.

C:\> echo  < hello world> Синтаксис команды неверный.

тогда как это выведет строку:<hello world>

C:\> echo  ^< привет мир ^> <привет мир>

Windows PowerShell

В Windows обратная косая черта используется как разделитель пути; поэтому ее, как правило, нельзя использовать как экранирующий символ. PowerShell вместо этого использует обратную кавычку [5] ( ` ).

Например, следующая команда:

PS C:\> echo " `t Первая строка `n Новая строка" Первая строка Новая строка

Другие

Смотрите также

Ссылки

  1. ^ "Последовательности экранирования символов JavaScript". Матиас Байненс. 21 декабря 2011 г. Получено 30 июня 2014 г.
  2. ^ "Специальные символы (JavaScript)". Microsoft Developer Network. Архивировано из оригинала 14 декабря 2014 г. Получено 2014-06-30 .
  3. ^ Бемер, Боб (25 октября 2003 г.). «Как Боб Бемер изобрел последовательность и ключ ESCAPE». Боб Бемер . Архивировано из оригинала 4 января 2018 г. Получено 22 марта 2018 г.
  4. ^ Тим Хилл (1998). "Командная оболочка Windows NT". Microsoft Learn . MacMillan Technical Publishing . Получено 13.01.2010 .
  5. ^ "about_Escape_Characters". Microsoft Developer Network. 2014-05-08. Архивировано из оригинала 2016-11-25 . Получено 2016-11-24 .

Внешние ссылки

Общественное достояние В этой статье использованы материалы из общедоступного федерального стандарта 1037C. Администрация общих служб . Архивировано из оригинала 2022-01-22.