문자열 이스케이프, 무엇이 어떻게 바뀌나

따옴표·백슬래시·줄바꿈이 섞인 텍스트를 JSON이나 자바스크립트 문자열에 그대로 붙여넣으면 문자열이 중간에 끊기거나 문법 에러가 납니다. 이스케이프는 이런 문자를 문자열 안에서 안전한 표기로 하나씩 바꿔 넣는 작업이고, 언이스케이프는 그 반대 방향입니다.

이 글은 원본의 각 특수문자가 결과에서 정확히 무엇으로 바뀌는지 표로 보여주고, 사람들이 자주 틀리는 지점을 "결과를 어떻게 읽는가"의 관점에서 정리합니다.

요약 ① 이스케이프는 원본을 한 글자씩 훑어 백슬래시는 \\, 선택한 따옴표는 \", 줄바꿈은 \n, 탭은 \t, 그 밖의 0x20 미만 제어문자는 \uXXXX 로 바꿉니다. ② 방향이 반대인 언이스케이프는 \n \t \uXXXX 같은 표기를 원래 문자로 되돌리고, 양끝 따옴표가 남아 있으면 자동 제거 옵션으로 벗겨야 결과가 어긋나지 않습니다. ③ 자주 틀리는 곳은 백슬래시를 먼저 처리하지 않아 이중으로 바뀌거나, 입력 따옴표와 선택한 따옴표가 달라 예상과 다른 결과가 나오는 지점입니다.

붙여넣는 순간 따옴표에서 끊기고 줄바꿈에서 에러가 납니다

여러 줄짜리 로그 메시지나 API 응답 텍스트를 JSON 설정 파일의 값 하나에 넣어야 하는 상황을 떠올려 보겠습니다. 그 텍스트에는 대개 큰따옴표가 들어 있고, 여러 줄이라 실제 줄바꿈도 포함되어 있습니다.

이걸 "..." 사이에 그대로 붙여넣으면, 본문 속 큰따옴표가 문자열을 감싸는 큰따옴표와 충돌해 그 지점에서 문자열이 끊깁니다. 게다가 JSON과 자바스크립트의 일반 문자열은 값 안에 실제 줄바꿈 문자를 담는 것을 허용하지 않아, 줄이 바뀌는 자리마다 문법 에러가 납니다.

윈도우 경로도 흔한 사례입니다. C:\new\test 를 문자열에 그대로 넣으면 \n\t 가 각각 줄바꿈과 탭으로 해석돼, 화면에 찍히는 값이 원본과 달라집니다. 이런 문자들을 "문자열 안에서 안전한 표기"로 바꾸는 것이 이스케이프입니다.

도구 없이 직접 이스케이프하는 방법

원리는 단순합니다. 원본을 왼쪽부터 한 글자씩 읽으면서, 문자열 리터럴을 깨뜨릴 수 있는 문자만 정해진 표기로 바꾸면 됩니다. 순서가 중요합니다.

  1. 감쌀 따옴표를 정합니다. 결과를 큰따옴표 리터럴에 넣을지, 작은따옴표에 넣을지, 백틱에 넣을지에 따라 이스케이프 대상이 달라집니다. 기본값은 큰따옴표입니다.
  2. 백슬래시를 가장 먼저 바꿉니다. 백슬래시(\)를 \\ 로 바꿉니다. 이 작업을 맨 처음 해야 하는 이유는, 뒤에서 따옴표를 이스케이프하며 새로 넣게 될 백슬래시까지 다시 건드리는 이중 처리를 막기 위해서입니다.
  3. 선택한 따옴표를 바꿉니다. 고른 따옴표 앞에 백슬래시를 붙입니다. 큰따옴표를 골랐다면 "\" 가 됩니다. 이때 고르지 않은 다른 종류의 따옴표는 건드리지 않습니다.
  4. 개행 계열 문자를 표기로 바꿉니다. 줄바꿈은 \n, 캐리지 리턴은 \r, 탭은 \t, 백스페이스는 \b, 폼피드는 \f 로 바꿉니다.
  5. 남은 제어문자를 처리합니다. 위에 이름이 없는 0x20 미만의 제어문자(널, 수직 탭, ESC 등)는 \u 뒤에 네 자리 16진수를 붙인 \uXXXX 형태로 바꿉니다.

각 원본 문자가 결과에서 어떻게 대응되는지 정리하면 다음과 같습니다.

원본 문자이스케이프 결과
백슬래시 \\\
선택한 따옴표(기본 ")\"
줄바꿈(LF)\n
캐리지 리턴(CR)\r
\t
백스페이스\b
폼피드\f
그 밖의 0x20 미만 제어문자\uXXXX

여기에 두 가지 선택지가 더 있습니다. 따옴표로 감싸기를 켜면 결과 전체를 선택한 따옴표로 한 번 감싸 바로 붙일 수 있는 리터럴로 만듭니다. 비ASCII도 \u 이스케이프를 켜면 한글·이모지처럼 ASCII 범위를 벗어난 문자도 \uXXXX 로 바꾸는데, U+FFFF를 넘는 문자(대부분의 이모지)는 서러게이트 쌍 두 개(\uXXXX\uXXXX)로 나뉩니다.

반대 방향인 언이스케이프는 규칙을 되짚습니다. \ 를 만나면 다음 글자를 보고 \n \r \t \b \f \v \0 은 해당 제어문자로, \xXX \uXXXX \u{XXXXX} 는 코드에 해당하는 문자로, 이스케이프된 따옴표·백슬래시·슬래시는 원래 기호로 되돌립니다. 문자열 양끝을 같은 따옴표가 감싸고 있으면 그 한 쌍을 벗겨냅니다.

방향 차이가 하나 있습니다. 이스케이프는 수직 탭과 널 문자를 \v \0 이 아니라 으로 내보내지만, 언이스케이프는 \v \0 표기도 원래 문자로 인식합니다.

저희 도구로 확인하기.

문자열 이스케이프

이스케이프·언이스케이프 두 방향을 브라우저에서 바로 변환합니다. 설치나 가입이 없고 입력한 텍스트는 서버로 전송되지 않습니다.

결과를 어떻게 읽는가 — 자주 틀리는 세 지점

규칙 자체는 위가 전부입니다. 정작 결과가 예상과 다르게 나오는 건 대개 아래 세 지점에서 갈립니다.

상황왜 결과가 어긋나나어떻게 맞추나
백슬래시를 뒤늦게 처리먼저 넣은 \" 의 백슬래시가 다시 \\ 로 이중 처리됨백슬래시를 가장 먼저 이스케이프
입력 따옴표 ≠ 선택 따옴표선택한 따옴표만 바뀌고 다른 따옴표는 그대로 남음감쌀 리터럴과 같은 따옴표를 선택
언이스케이프 시 양끝 따옴표 잔존앞뒤 " 가 본문에 섞여 결과가 한 글자씩 밀림양끝 따옴표 자동 제거를 켬

백슬래시 순서 문제. 손으로 처리하다 따옴표를 먼저 바꾸면, 그때 새로 붙인 백슬래시까지 다음 단계에서 다시 \\ 로 바뀝니다. 도구는 원본을 한 번만 왼쪽에서 오른쪽으로 훑기 때문에 새로 넣은 백슬래시를 다시 읽지 않아 이 이중 처리가 생기지 않습니다.

따옴표 종류 불일치. 작은따옴표 리터럴에 넣을 텍스트인데 큰따옴표 모드로 이스케이프하면, 본문의 작은따옴표는 그대로 남습니다. 그 결과를 '...' 안에 붙이면 남아 있던 작은따옴표에서 문자열이 끊깁니다. 결과를 감쌀 따옴표와 도구에서 고른 따옴표가 같은지부터 확인하면 됩니다.

언이스케이프 시 양끝 따옴표. "가\tHello" 처럼 앞뒤가 따옴표로 감싸인 문자열을 되돌릴 때, 그 따옴표를 벗기지 않으면 결과 앞뒤에 따옴표 한 글자가 그대로 남습니다. 양끝 따옴표 자동 제거를 켜면 앞뒤 문자가 같은 따옴표일 때 그 한 쌍만 벗겨냅니다.

정리

  • 이스케이프는 원본을 한 글자씩 읽어 백슬래시 → \\, 선택한 따옴표 → \", 줄바꿈 → \n, 탭 → \t, 그 밖의 0x20 미만 제어문자 → \uXXXX 로 바꿉니다.
  • 손으로 할 때는 백슬래시를 가장 먼저 처리해야 이중 처리를 피할 수 있습니다. 도구는 한 번만 훑어 이 문제를 자동으로 피합니다.
  • 이스케이프 대상은 고른 따옴표에 따라 달라집니다. 결과를 넣을 리터럴의 따옴표와 같은 종류를 골라야 예상대로 나옵니다.
  • 언이스케이프는 반대 방향으로 \n \uXXXX 등을 되돌리며, 양끝 따옴표는 자동 제거 옵션으로 벗겨야 결과가 밀리지 않습니다.
  • 비ASCII도 \u 이스케이프를 켜면 한글·이모지가 \uXXXX 로, U+FFFF를 넘는 문자는 서러게이트 쌍으로 바뀝니다.
문자열 이스케이프

이스케이프·언이스케이프 두 방향을 브라우저에서 바로 변환합니다. 설치나 가입이 없고 입력한 텍스트는 서버로 전송되지 않습니다.

자주 묻는 질문

이스케이프와 언이스케이프는 무엇이 다른가요?

방향이 반대입니다. 이스케이프는 사람이 보는 원본 텍스트를 문자열 리터럴에 넣을 수 있는 표기(\n \" 등)로 바꾸고, 언이스케이프는 그 표기를 다시 원래 문자로 되돌립니다. 도구 상단의 탭으로 두 방향을 전환하며, 입력이 바뀔 때마다 결과와 입력·결과 문자 수가 즉시 다시 계산됩니다.

한글이나 이모지도 \u 로 바꿀 수 있나요?

'비ASCII도 \u 이스케이프' 옵션을 켜면 한글·이모지 등 ASCII 범위를 벗어난 문자도 \uXXXX 형태로 바꿉니다. U+FFFF를 넘는 문자, 즉 대부분의 이모지는 서러게이트 쌍 두 개로 나뉩니다. 옵션을 꺼두면 이런 문자는 원래 모습 그대로 둡니다.

작은따옴표로 감쌀 건데 왜 큰따옴표가 그대로 나오나요?

따옴표 선택이 큰따옴표로 되어 있으면 이스케이프 대상은 큰따옴표뿐이라, 본문의 작은따옴표는 건드리지 않습니다. 결과를 '...' 안에 넣을 계획이라면 따옴표 선택을 작은따옴표로 바꿔야 작은따옴표가 \' 로 이스케이프됩니다. 감쌀 리터럴과 같은 따옴표를 고르는 것이 핵심입니다.

언이스케이프했더니 앞뒤에 따옴표가 남아요.

입력한 문자열이 양끝을 따옴표로 감싸고 있는데 '양끝 따옴표 자동 제거'가 꺼져 있으면, 그 따옴표가 본문의 일부로 취급돼 결과 앞뒤에 그대로 남습니다. 옵션을 켜면 앞뒤 문자가 같은 따옴표(큰따옴표·작은따옴표·백틱)일 때 그 한 쌍만 벗겨낸 뒤 나머지를 되돌립니다.

가격 보기카톡 무료 상담