맨위로가기

이스케이프 문자

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

이스케이프 문자는 자체적인 의미를 갖지 않고 다른 문자와 함께 특수한 기능을 수행하는 문자를 의미하며, 프로그래밍 언어, 데이터 형식, 통신 프로토콜 등 다양한 분야에서 사용된다. 이스케이프 문자는 장치 명령이나 특수 데이터를 인코딩하거나, 문자열 내에서 특수 문자를 표현하는 데 사용되며, 백슬래시(\)나 퍼센트 기호(%) 등이 대표적인 예시이다. 한국어 윈도우 환경에서는 백슬래시가 원화 기호(₩)로 표시될 수 있지만, 동일한 ASCII 코드 값을 가지므로 프로그래밍에서는 동일하게 처리된다.

더 읽어볼만한 페이지

  • 컴퓨팅 명령어 - 명령 프롬프트
    명령 프롬프트는 사용자로부터 명령을 입력받아 운영체제나 셸에 전달하는 인터페이스로, 사용자 정의가 가능한 셸 프롬프트 형식으로 다양한 운영체제 환경에서 여러 작업을 수행하는 데 활용된다.
  • 컴퓨팅 명령어 - 명령어 (컴퓨팅)
    명령어는 운영 체제, 프로그래밍 언어, 주변 기기 제어, GUI 환경, 게임 등에서 사용되며, 셸이 해석하거나 프로그래밍 언어의 문법 요소, 게임 내 캐릭터 지시 등 다양한 형태로 존재한다.
  • 패턴 매칭 - 퇴각검색
    퇴각검색은 해를 찾기 위해 트리 구조로 표현된 후보들을 깊이 우선 탐색 방식으로 탐색하며, 유효하지 않은 후보는 가지치기하여 탐색 시간을 단축하는 알고리즘이다.
  • 패턴 매칭 - 정규 표현식
    정규 표현식은 특정 패턴 문자열 집합을 표현하는 식으로, 스티븐 클레이니가 고안하고 켄 톰슨이 텍스트 편집기에 도입한 후 펄을 거쳐 현재 다양한 프로그래밍 언어와 환경에서 텍스트 처리 및 데이터 검증에 널리 쓰인다.
이스케이프 문자
'개요'
정의
'정의''이스케이프 문자(escape character)는 일반적으로 다른 문자나 문자 시퀀스의 해석을 변경하는 데 사용되는 문자임.'
'용도''주로 제어 문자의 기능을 활용하거나, 본래 사용할 수 없는 다른 기능을 사용하기 위해 사용됨.'
'구분''메타문자와 유사한 개념으로 간주될 수 있지만, 모든 메타문자가 이스케이프 문자는 아님.'
'프로그래밍 언어 및 데이터 형식'
'C 언어''C 언어를 포함한 여러 프로그래밍 언어에서 백슬래시(\)가 이스케이프 문자로 사용됨. 예를 들어, \n은 줄바꿈을, \t는 탭을 나타냄.'
'정규 표현식''정규 표현식에서는 역슬래시를 사용하여 특수 문자의 특별한 의미를 없애고 리터럴 문자로 취급할 수 있음. 예를 들어, \*는 리터럴 * 문자와 일치함.'
'URI (URL)''URI에서는 예약 문자나 안전하지 않은 문자를 퍼센트 인코딩(Percent-encoding)하여 이스케이프 처리함. 예를 들어, 공백 문자는 %20으로 인코딩됨.'
'HTML''HTML에서는 <, >, & 등의 문자 엔티티를 사용하여 특수 문자를 이스케이프 처리함.'
'예시'
'예시''문자열 내에서 큰따옴표를 사용하기 위해 \"와 같이 이스케이프 문자를 활용할 수 있음. 또한, 정규 표현식에서 특수 문자를 일반 문자로 취급하기 위해 이스케이프 문자를 사용하기도 함.'
'같이 보기'
'같이 보기''제어 문자'
'C 언어'
'정규 표현식'
'URI (URL)'
'HTML'
'메타문자'
'이스케이프 시퀀스'
'외부 링크'
'외부 링크''이스케이프 문자 - 네이버 검색'
'이스케이프 문자 - 나무위키'
'제어 문자 - 위키백과'

2. 정의

이스케이프 문자는 자체적인 의미를 가질 수 없으며, 항상 두 개 이상의 문자로 구성된 이스케이프 시퀀스의 일부로 사용된다. 이스케이프 문자는 많은 프로그래밍 언어, 데이터 형식 및 통신 프로토콜문법의 일부이다. 주어진 알파벳에서 이스케이프 문자의 목적은 이스케이프 문자 접두사가 없는 상태로 나타나는 동일한 문자와는 다르게 해석되어야 하는 문자 시퀀스(이스케이프 시퀀스)를 시작하는 것이다.

이스케이프 시퀀스는 다음과 같은 기능을 수행한다.


  • 알파벳으로 직접 표현할 수 없는 장치 명령 또는 특수 데이터와 같은 구문적 엔티티를 인코딩한다.
  • 현재 컨텍스트에서 입력할 수 없거나 원치 않는 해석을 갖는 문자를 나타내는 '문자 인용'이다. 이 경우 이스케이프 시퀀스는 이스케이프 문자 자체와 "인용된" 문자로 구성된 디그래프이다.


이스케이프 문자 예시
예약문자내용참고
\n줄바꿈개행 문자(캐리지 리턴)
\시퀀스 문자 시작
\t현재 시간
\u사용자 이름
\033---컬러 색상 관련\033[0;31m (텍스트 빨간색)
\w현재 작업 중인 로컬 디렉토리 전체 경로명/home
\[비출력 문자열 시작
\]비출력 문자열 종료


2. 1. 제어 문자와의 관계

일반적으로 이스케이프 문자는 장치 제어 문자의 일종이 아니며, 그 반대도 마찬가지이다. 제어 문자를 비도형 문자, 즉 컴퓨터 프린터 또는 텍스트 터미널과 같은 출력 장치에 특별한 의미를 갖는 것으로 정의한다면, 해당 장치에게 모든 이스케이프 문자는 제어 문자이다. 그러나 프로그래밍에 사용되는 이스케이프 문자는 백슬래시(`\`)[1] 또는 퍼센트 기호 (%) 등의 도형 문자이므로 제어 문자가 아니다. 반대로 (전부는 아니지만) 대부분의 아스키 제어 문자는 단독으로 어떠한 제어 기능을 가지고 있기 때문에 이스케이프 문자가 아니다.

많은 프로그래밍 언어에서 이스케이프 문자는 제어 문자를 참조하는 이스케이프 시퀀스도 만든다. 예를 들어, 개행의 이스케이프 시퀀스는 `\n`이다.

3. 주요 사용 예시

프로그래밍 언어, 데이터 형식, 통신 프로토콜, ASCII 등 다양한 분야에서 이스케이프 문자가 사용된다.

프로그래밍 언어에서는 주로 백슬래시(`\`)를 이스케이프 문자로 사용하여 문자열 리터럴 내에서 특수 문자를 표현한다.


  • C, C++, Java, Ruby에서는 `\"`를 사용하여 문자열 안에 큰따옴표를 포함할 수 있다.
  • JavaScript에서도 백슬래시를 사용하며, `\n`은 줄 바꿈, `\t`는 탭을 나타낸다.


quoted-printable 인코딩은 등호를, URL 및 URI는 %를 이스케이프 문자로 사용한다. 본 셸(sh)에서는 별표(*)와 물음표(?)가 와일드카드 문자로 사용되는데, 백슬래시를 앞에 붙여 이스케이프할 수 있다. Windows 명령 줄 인터프리터에서는 캐럿(^)을, PowerShell에서는 백틱(`)을 이스케이프 문자로 사용한다.

점대점 프로토콜(PPP)에서는 `0x7D` 옥텟을 이스케이프 문자로 사용하며, ASCII 이스케이프 문자(십진수 27, 16진수 )는 많은 출력 장치에서 제어 시퀀스를 시작하는 데 사용된다.

3. 1. 프로그래밍 언어

프로그래밍 언어에서 이스케이프 문자는 문자열 리터럴 내에서 특수 문자를 표현하는 데 사용된다. 일반적으로 백슬래시 (`\`)가 이스케이프 문자로 사용되며, 자체적인 의미를 가질 수 없으므로 모든 이스케이프 시퀀스는 두 개 이상의 문자로 구성된다. 이스케이프 시퀀스의 주요 기능은 다음과 같다.

  • 알파벳으로 직접 표현할 수 없는 장치 명령 또는 특수 데이터와 같은 구문적 엔티티를 인코딩한다.
  • 현재 컨텍스트에서 입력할 수 없거나 원치 않는 해석을 갖는 문자를 나타내는 '문자 인용'을 수행한다.


C, C++, Java, Ruby 등 많은 현대 프로그래밍 언어들은 문자열 리터럴의 구분 기호로 큰따옴표(")를 사용한다. 백슬래시 이스케이프 문자는 문자열 리터럴 안에 큰따옴표를 포함하는 두 가지 방법을 제공한다.

  • 문자열에 포함된 큰따옴표 문자의 의미를 수정: `\"`는 `"`가 된다.
  • 큰따옴표 문자의 16진수 값을 포함한 일련의 문자들의 의미를 수정: `\x22`는 `"`가 된다.


quoted-printable 인코딩은 등호를 이스케이프 문자로 사용하며, URL 및 URI는 특수한 의미를 가진 문자를 인용하기 위해 %-이스케이프를 사용한다. 일부 프로그래밍 언어는 이스케이프 문자를 요구하지 않고 리터럴에서 특수 문자를 나타내는 다른 방법을 제공하기도 한다 (예: 구분 기호 충돌 참조).

3. 1. 1. JavaScript

JavaScript에서는 백슬래시(`\`)를 이스케이프 문자로 사용한다.[1][2][6][7]

표현의미
`\'`작은따옴표
`\"`큰따옴표
`\\`백슬래시(원 기호)
`\n`줄 바꿈
`\r`캐리지 리턴
`\t`
`\b`백스페이스
`\f`폼 피드
`\v`수직 탭 (Internet Explorer 9 및 이전 버전에서는 `\v`를 수직 탭(`\x0B`) 대신 `v`로 처리한다. 브라우저 간 호환성을 고려해야 하는 경우 `\v` 대신 `\x0B`를 사용한다.)
`\0`null 문자 (다음 문자가 10진수 숫자가 아닌 경우에만 해당, 그렇지 않으면 8진수 이스케이프 시퀀스)
`\xFF`16진수 바이트 `FF`로 표현되는 문자



`\v`와 `\0`는 JSON에서는 사용할 수 없다.

3. 1. 2. C, C++, Java, Ruby

C, C++, Java, Ruby는 모두 정확히 동일한 두 가지 백슬래시 이스케이프 스타일을 허용한다. 즉, 문자열 리터럴 내에서 큰따옴표를 표현하기 위해 `\"` (큰따옴표 문자의 의미 수정) 또는 `\x22` (큰따옴표 문자의 16진수 값을 포함) 방식을 사용한다. PostScript 언어와 마이크로소프트 서식 있는 텍스트 형식 또한 백슬래시 이스케이프를 사용한다.

C/C++/Java의 문자열 리터럴에서는 8진수의 ASCII 코드를 사용하여 `\42`나 `\042`라고 쓸 수도 있지만, C#에서는 지원되지 않는다.

3. 1. 3. Python

파이썬에서는 쌍따옴표로 둘러싼 `"x"`와 작은따옴표로 둘러싼 `'x'`는 모두 문자열을 나타낸다. C 계열 언어에서 사용되는 이스케이프 시퀀스도 지원한다. 백슬래시(`\`)를 이스케이프 문자로 사용하며, `"\n"` 과 `'\n'` 모두 개행 문자로 구성된 길이 1의 문자열을 의미한다.

파이썬에서 사용하는 예약 문자와 그 내용은 다음과 같다.

예약문자내용참고
\n줄바꿈캐리지 리턴
\시퀸스 문자 시작"
\t현재 시간
\u사용자 이름
\033---컬러 색상 관련\033[0;31m (텍스트 빨간색)
\w현재 작업 중인 로컬 디렉토리 전체 경로명/home
\[비출력 문자열 시작
\]비출력 문자열 종료


3. 1. 4. Bourne Shell (sh)

본 셸(sh)에서, 별표(*)와 물음표(?) 문자는 와일드카드 문자이며 글로빙을 통해 확장된다. 이스케이프 문자가 앞에 오지 않으면, *는 작업 디렉토리에 있는 모든 파일의 이름으로 확장되는데, 단, 마침표(.)로 시작하는 파일은 제외한다. 이러한 파일이 존재하는 경우에만 확장되며, 그렇지 않으면 *는 확장되지 않은 상태로 남는다. 따라서 문자 그대로 "*"로 불리는 파일을 참조하려면, 셸에게 백슬래시(\)를 앞에 붙여서 이 문자를 특별한 방식으로 해석하지 않도록 지시해야 한다. 이렇게 하면 별표(*)의 해석이 변경된다. 다음을 비교해 보자.

style="width:25px;"|



본 셸(sh)에서는, 별표(*)와 물음표(?)가 와일드카드(정보 처리)로 사용된다. 이스케이프 문자를 사용하지 않으면, *는 현재 디렉터리의 모든 파일의 파일명으로 전개된다. "*"라는 파일명을 가리키고 싶은 경우에는, 백슬래시(\영어)를 앞에 붙인다. 예를 들어, 백슬래시를 붙이지 않는 경우와 붙인 경우에, 다음과 같이 동작이 바뀐다.

3. 1. 5. Windows Command Prompt

Windows 명령 줄 인터프리터는 `&`, |, `(`, `)`, `<`, `>`, `^`와 같이 특수한 의미를 갖는 예약 문자를 이스케이프하기 위해 캐럿(^) 문자를 사용한다.[4]

예를 들어, Windows 명령 프롬프트에서 다음과 같은 명령은 구문 오류를 발생시킨다.

```text

C:\>echo

The syntax of the command is incorrect.

```

반면에, 다음과 같은 명령은 문자열 ``를 출력한다.

```text

C:\>echo ^



```

Windows 명령 프롬프트(cmd.exe)에서는, `&`, `|`, `(`, `)`, `<`, `>`, `^`와 같이 특별한 의미를 가진 문자를 위한 이스케이프 문자로 캐럿(^)을 사용한다.[8]

예를 들어, 명령 프롬프트에서 "x
```doscon

echo x
```

따라서, 다음과 같이 캐럿으로 이스케이프해야 한다.

```doscon

echo x^

3. 1. 6. Windows PowerShell

윈도우에서 백슬래시는 경로 구분자로 사용되기 때문에 일반적으로 이스케이프 문자로 사용할 수 없다. PowerShell은 대신 백틱(`)(`)을 사용한다.[5]

예시는 다음과 같다.

```powershell

PS C:\> echo "`tFirst line`nNew line"

First line

New line

3. 1. 7. 기타 프로그래밍 언어

JavaScript는 백슬래시(\\)를 이스케이프 문자로 사용한다.[1][2] 여기에는 작은따옴표, 큰따옴표, 백슬래시, 줄 바꿈, 캐리지 리턴, 탭, 백스페이스, 폼 피드, 수직 탭, null 문자, 16진수 바이트로 표현되는 문자가 포함된다.

현대적인 많은 프로그래밍 언어들은 큰따옴표(")를 문자열 리터럴의 구분 기호로 지정한다. 백슬래시 이스케이프 문자는 일반적으로 문자열 리터럴 안에 큰따옴표를 포함하는 두 가지 방법을 제공한다. 문자열에 포함된 큰따옴표 문자의 의미를 수정하거나("는 "가 됨), 큰따옴표 문자의 16진수 값을 포함한 일련의 문자들의 의미를 수정하는 것이다(\\x22는 "가 됨).

C, C++, Java, Ruby는 모두 정확히 동일한 두 가지 백슬래시 이스케이프 스타일을 허용한다. PostScript 언어와 마이크로소프트 서식 있는 텍스트 형식 또한 백슬래시 이스케이프를 사용한다. quoted-printable 인코딩은 등호를 이스케이프 문자로 사용한다.

URL 및 URI는 특수한 의미를 가진 문자를 인용하기 위해 %-이스케이프를 사용하며, 이는 비 ASCII 문자를 위해서도 사용된다.

printf 함수의 서식 문자열에서는 퍼센트 기호(%)가 이스케이프 문자이다.

3. 2. 데이터 형식

URL 및 URI 등에서 %를 사용하여 특수 문자나 비ASCII 문자를 인코딩하는 퍼센트 인코딩을 사용한다. SGML, HTML, XML 등에서 앰퍼샌드를 이스케이프 문자로 취급한다. 쿼티드-프린터블 인코딩에서는 등호를 이스케이프 문자로 사용한다.

3. 3. 통신 프로토콜

점대점 프로토콜(PPP)은 0x7D 옥텟을 이스케이프 문자로 사용한다. 바로 뒤의 옥텟은 상위 계층 프로토콜로 전달되기 전에 0x20으로 XOR 연산되어야 한다. 이 방식은 PPP에 의해 캡슐화된 상위 계층 프로토콜이 0x7D 자체와 제어 문자 0x7E (PPP에서 프레임의 시작과 끝을 표시하는 데 사용됨)를 전송해야 할 때, 그리고 링크가 설정될 때 협상된 다른 옥텟에도 적용된다. 즉, 상위 계층 프로토콜이 0x7D를 전송하려는 경우, 0x7D 0x5D 시퀀스로 전송되며, 0x7E0x7D 0x5E로 전송된다.

3. 4. ASCII 이스케이프 문자

ASCII 이스케이프 문자(십진수 27, 16진수 )는 많은 출력 장치에서 제어 시퀀스 또는 이스케이프 시퀀스를 시작하는 데 사용된다. 일반적으로 이스케이프 문자는 장치에 후속 문자를 일반 문자가 아닌 제어 시퀀스로 해석해야 함을 알리기 위해 이러한 시퀀스에서 먼저 전송되며, 그 뒤에 하나 이상의 문자가 세부적인 작업을 지정한다. 그 후 장치는 정상적으로 문자를 해석하는 것으로 돌아간다. 예를 들어, ^[ 시퀀스 다음에 인쇄 가능한 문자 [2;10H가 오면 DEC VT102 터미널의 커서를 화면의 두 번째 줄의 10번째 셀로 이동시킨다. 이는 나중에 ANSI 이스케이프 코드로 개발되었다.[3]

"이스케이프 문자"라는 용어는 밥 베머의 IBM 기술 출판물에서 처음 언급되었으며, 그는 ASCII 문자 집합 작업 중에 이 메커니즘을 발명한 것으로 알려져 있다.[3]

4. 한국어 환경에서의 특수성

한국어 윈도우 환경에서는 폰트 등에 따라 백슬래시(`\`)가 원화 기호(`₩`)로 표시될 수 있다. 그러나 이 두 문자는 동일한 아스키 코드 값 (92, `0x5C`)을 가지므로, 프로그래밍 관점에서는 동일하게 처리된다. 이러한 표기 차이는 혼동을 야기할 수 있지만, 한국 프로그래머들은 이러한 특수성을 인지하고 개발 과정에서 적절히 대응하고 있다.

참조

[1] 웹사이트 JavaScript character escape sequences http://mathiasbynens[...] Mathias Bynens 2011-12-21
[2] 웹사이트 Special Characters (JavaScript) http://msdn.microsof[...] Microsoft Developer Network null
[3] 웹사이트 How Bob Bemer Invented the ESCAPE Sequence and Key http://www.bobbemer.[...] 2003-10-25
[4] 웹사이트 The Windows NT Command Shell https://technet.micr[...] MacMillan Technical Publishing null
[5] 웹사이트 about_Escape_Characters https://technet.micr[...] Microsoft Developer Network 2014-05-08
[6] 웹사이트 JavaScript character escape sequences ¡ Mathias Bynens http://mathiasbynens[...] Mathiasbynens.be null
[7] 웹사이트 Special Characters (JavaScript) http://msdn.microsof[...] Msdn.microsoft.com 2014-06-20
[8] 웹사이트 The Windows NT Command Shell http://technet.micro[...] MacMillan Technical Publishing null



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com