이스케이프 캐릭터

Escape character

탈출 문자(Escape character)는 컴퓨터 및 통신에서 문자 시퀀스에서 다음 문자에 대한 대체 해석을 불러일으키는 문자입니다. 탈출 캐릭터는 메타 캐릭터의 특정한 경우입니다. 일반적으로 어떤 것이 탈출 캐릭터인지 아닌지에 대한 판단은 맥락에 따라 달라집니다.

통신 분야에서 이스케이프 문자는 다음 문자가 서로 다르게 인코딩되었음을 나타내기 위해 사용됩니다. 이는 불법 문자와 같은 기본 통신 하드웨어에 의해 감지되고 조치되는 제어 문자를 변경하는 데 사용됩니다. 이러한 맥락에서 탈출 문자를 사용하는 것을 인용이라고 합니다.

정의.

이스케이프 문자는 고유한 의미가 없을 수 있으므로 모든 이스케이프 시퀀스는 두 문자 이상입니다.

이스케이프 문자는 많은 프로그래밍 언어, 데이터 형식 및 통신 프로토콜에 대한 구문의 일부입니다. 주어진 알파벳의 경우 이스케이프 문자의 목적은 문자 시퀀스(이른바 이스케이프 시퀀스)를 시작하는 것이며, 이는 접두사가 없는 동일한 문자와 다르게 해석되어야 합니다.

이스케이프 시퀀스의 기능은 다음과 같습니다.

  • 알파벳으로 직접 표현할 수 없는 장치 명령 또는 특수 데이터와 같은 구문 엔티티를 인코딩합니다.
  • 문자 인용이라고 하는 문자를 나타내기 위해 현재 컨텍스트에서 입력할 수 없거나 원하지 않는 해석을 가질 수 있습니다. 이 경우 탈출 시퀀스는 탈출 문자 자체와 "인용된" 문자로 구성된 디그래프입니다.

제어문자

일반적으로 이스케이프 문자는 (장치) 제어 문자의 특정한 경우가 아니며 그 반대의 경우도 아닙니다. 제어 문자를 그래픽이 아닌 문자로 정의하거나 출력 장치(예: 프린터 또는 텍스트 터미널)에 대한 특별한 의미를 가진 문자로 정의하면 이 장치에 대한 이스케이프 문자는 제어 문자입니다. 그러나 프로그래밍에 사용되는 이스케이프 문자(백슬래시, "\" 등)는 그래픽이므로 컨트롤 문자가 아닙니다. 반대로 ASCII "제어 문자"의 대부분(전부는 아니지만)은 일부 제어 기능을 개별적으로 가지고 있으므로 이스케이프 문자는 아닙니다.

많은 프로그래밍 언어에서 이스케이프 문자는 제어 문자라고 하는 일부 이스케이프 시퀀스를 형성하기도 합니다. 예를 들어, 줄 끊기는 다음과 같은 이스케이프 시퀀스를 갖습니다. \n.

자바스크립트

자바스크립트는 다음을 사용합니다. \ (backslash) 다음을 위한 탈출 문자입니다.[1][2]

  • \' 일문일답
  • \" 이중 인용문
  • \\ 백슬래시
  • \n 신라인
  • \r 객차 반환
  • \t
  • \b 뒷공간
  • \f 사료를 만들다
  • \v 세로탭(Internet Explorer 9 이상의 간식) '\v ~하듯이 'v 세로 탭 대신('\x0B). 크로스 브라우저 호환성이 우려되는 경우 사용 \x0B 대신에 \v.)
  • \0 Null 문자(U+0000 NULL)(다음 문자가 10진수가 아닌 경우에만 해당되며, 그렇지 않으면 8진수 이스케이프 시퀀스)
  • \xFF 16진수 바이트 "FF"로 표시되는 문자

\v 그리고. \0 JSON 문자열에서는 탈출이 허용되지 않습니다.

예제 코드:

위로하다.로그.("사용\\n \n문자를 \\n 다음으로 이동합니다. 한 줄 아래로") 위로하다.로그.("\t를 사용하면 \\t 탭 길이 뒤에 문자가 오른쪽으로 이동합니다.") 위로하다.로그.("사용\r \r행의 시작으로 이동하는 것을 의미하는 마차 반환을 모방할 것입니다.") // 일부 단말기의 화면을 지우는 데 사용할 수 있습니다. Windows는 \r\n를 사용합니다. \n대신에 홀로. 

ASCII 이스케이프 문자

ASCII "탈출" 문자(옥탈: \033, 16진수: \x1B, 또는 ^[, 또는 십진법으로. 27)는 제어 시퀀스 또는 이스케이프 시퀀스라고 하는 일련의 문자를 시작하기 위해 많은 출력 장치에 사용됩니다. 일반적으로 이스케이프 문자는 다음 문자가 일반 문자가 아닌 제어 시퀀스로 해석된다는 것을 장치에 알리기 위해 먼저 전송되었으며, 그 후 하나 이상의 문자가 뒤따르며 몇 가지 세부 작업을 지정하고 그 후 장치는 일반적으로 문자를 해석합니다. 예를 들어, 다음과 같은 순서가 있습니다. ^[, 인쇄 가능한 문자들이 뒤를 이었습니다. [2;10H, DEC(Digital Equipment Corporation) VT102 단말기가 화면의 두 번째 줄의 10번째 셀로 커서를 이동합니다. 이것은 나중에 ANSI X3.64 표준에서 다루는 ANSI 탈출 코드로 개발되었습니다. 이스케이프 문자는 또한 Hewlett-Packard Printer Command Language의 각 명령 시퀀스를 시작합니다.

"탈출 문자"라는 용어에 대한 초기 언급은 밥 베머(Bob Bemer)의 IBM 기술 간행물에서 찾을 수 있으며, 그는 ASCII 문자 집합에 대한 작업 중에 이 메커니즘을 발명한 것으로 알려져 있습니다.[3]

이스케이프 키는 일반적으로 표준 PC 키보드에서 볼 수 있습니다. 그러나 일반적으로 PDA용 키보드 및 ASCII 통신용으로 주로 설계되지 않은 기타 장치에는 없습니다. DEC VT220 시리즈는 메인 키패드 위에 있는 키 중 하나를 사용하는 대신 전용 Esc 키가 없는 몇 안 되는 인기 키보드 중 하나였습니다. 1970-1980년대의 사용자 인터페이스에서는 이 키를 탈출 문자로 사용하는 것이 드물지 않았지만 현대 데스크톱 컴퓨터에서는 이러한 사용이 중단됩니다. 때로는 AltMode(대체 모드용)에서 키가 식별되기도 했습니다. 전용 키가 없어도 탈출 문자 코드를 입력하여 생성할 수 있습니다. [ 동시에 억제하면서 Ctrl.

프로그래밍 및 데이터 형식

현대의 많은 프로그래밍 언어들은 이중 따옴표 문자를 지정합니다.")를 문자열 리터럴구분 기호로 사용합니다. 백슬래시()\) 이스케이프 문자는 일반적으로 문자열에 포함된 이중 quote 문자의 의미를 수정하여 문자열 리터럴 내부에 이중 quotes를 포함하는 두 가지 방법을 제공합니다.\" 된다 ") 또는 이중 quote 문자의 16진수 값을 포함한 문자 시퀀스의 의미를 수정합니다.\x22 된다 ").

C, C++, Java, Ruby 모두 동일한 두 백슬래시 탈출 스타일을 허용합니다. PostScript 언어와 Microsoft 리치 텍스트 형식도 백슬래시 탈출을 사용합니다. 따옴표로 인쇄 가능한 인코딩은 등호를 이스케이프 문자로 사용합니다.

URLURI%-escape을 사용하여 ASC가 아닌 경우와 같이 특수한 의미의 문자를 인용합니다.II자. 앰퍼샌드(&) 문자는 SGMLHTML, XML 등의 파생 형식에서 이스케이프 문자로 간주될 수 있습니다.

일부 프로그래밍 언어는 문자 그대로의 특수 문자를 나타내는 다른 방법을 제공하기도 하며, 이스케이프 문자(예: 구분 기호 충돌)를 필요로 하지 않습니다.

통신 규약

PPP(Point-to-Point Protocol)는 다음을 사용합니다. 0x7D 옥텟(\175, 또는 ASCII: }) 탈출 캐릭터로. 바로 다음에 오는 옥텟은 XOR해야 합니다. 0x20 더 높은 수준의 프로토콜로 전달되기 전에. 이것은 둘 다에 적용됩니다. 0x7D 그 자체와 통제적 성격. 0x7E (프레임의 시작과 끝을 표시하기 위해 PPP에서 사용됨) 이러한 옥텟은 PPP에 의해 캡슐화된 상위 수준의 프로토콜에 의해 전송될 필요가 있을 때 뿐만 아니라 링크가 확립될 때 네고시에이트된 다른 옥텟들도 전송될 필요가 있습니다. 즉, 상위 수준의 프로토콜이 전송하기를 원할 때 0x7D, 시퀀스로 전송됩니다. 0x7D 0x5D,그리고. 0x7E 다음과 같이 전송됩니다. 0x7D 0x5E.

본쉘

Bourne 셸(sh)에서 별표(*) 및 물음표(?) 문자는 글로빙을 통해 확장된 와일드카드 문자입니다. 이전의 탈출 캐릭터가 없으면, * 파일이 있는 경우에만 마침표로 시작하지 않는 작업 디렉토리의 모든 파일 이름으로 확장됩니다. * 확장되지 않은 상태로 유지됩니다. 따라서 문자 그대로 "*"라는 파일을 참조하려면 셸에 백슬래시를 사용하여 이러한 방식으로 해석하지 않도록 해야 합니다.\). 이는 별표의 해석을 수정합니다(*). 비교:

rm * # 현재 디렉터리의 모든 파일 삭제 
rm \* # *라는 이름의 파일을 삭제합니다. 

Windows 명령 프롬프트

Windows 명령줄 인터프리터캐럿 문자를 사용합니다.^특별한 의미를 가진 예약된 문자(특히: &, , (, ), <, >, ^).[4] DOS 명령줄 인터프리터는 유사한 구문을 가지고 있지만 이를 지원하지 않습니다.

예를 들어, Windows 명령 프롬프트에서 구문 오류가 발생합니다.

C:\>echo <hello world> 명령 구문이 잘못되었습니다. 

반면에 이렇게 하면 문자열이 출력됩니다. <hello world>

C:\>echo ^<hello world^> <안녕 세상> 

Windows PowerShell

Windows에서는 백슬래시를 경로 구분자로 사용하므로 일반적으로 이스케이프 문자로 사용할 수 없습니다. PowerShell백틱[5](')을 대신 사용합니다.

예를 들어, 다음 명령이 있습니다.

PSC:\> 메아리가 울리다 ""t.첫번째 줄신라인"         첫번째 줄 신라인 

다른이들

  • 8비트 데이터를 제한된 선 길이의 7비트 데이터로 인코딩하는 인용문 인쇄 가능은 동일한 부호를 사용합니다.=) 탈출 캐릭터로.

참고 항목

참고문헌

  1. ^ "JavaScript character escape sequences". Mathias Bynens. 21 December 2011. Retrieved 2014-06-30.
  2. ^ "Special Characters (JavaScript)". Microsoft Developer Network. Archived from the original on Dec 14, 2014. Retrieved 2014-06-30.
  3. ^ Bemer, Bob (Oct 25, 2003). "How Bob Bemer Invented the ESCAPE Sequence and Key". Bob Bemer. Archived from the original on 4 January 2018. Retrieved 22 March 2018.
  4. ^ Tim Hill (1998). "The Windows NT Command Shell". Microsoft Learn. MacMillan Technical Publishing. Retrieved 2010-01-13.
  5. ^ "about_Escape_Characters". Microsoft Developer Network. 2014-05-08. Archived from the original on 2016-11-25. Retrieved 2016-11-24.

외부 링크

Public Domain 이 문서에는 다음의 퍼블릭 도메인 자료가 포함되어 있습니다.