유니코드 이스케이프 변환기
텍스트를 \uXXXX, U+XXXX, HTML 엔티티로 인코딩하고, 그 어떤 형식이든 다시 텍스트로 디코딩합니다. 이모지·확장 문자도 처리합니다.
사용법
- 방향을 고릅니다: 텍스트 → 이스케이프, 또는 이스케이프 → 텍스트.
- 인코딩 시 형식과, 모든 문자를 이스케이프할지 비ASCII만 할지 고릅니다.
- 출력 상자에서 결과를 복사합니다.
자세한 설명
펼치기접기
텍스트를 이스케이프 시퀀스로, 또 그 반대로 바꿔 줍니다. 인코딩은 자바스크립트와 JSON의 \uXXXX, 명세와 버그 리포트에서 쓰이는 U+XXXX 표기, 그리고 16진과 10진 HTML 엔티티를 지원합니다. 평범한 아스키는 읽을 수 있게 남겨 두거나, 목적지가 까다롭다면 모든 문자를 이스케이프할 수 있습니다. 디코딩은 이 전부를 한꺼번에 인식하고 \u{...}, \xXX, 접두어만 붙은 U+까지 알아보므로, 서로 다른 세 가지 이스케이프 방식이 뒤섞인 로그 한 줄도 원래 텍스트로 되돌아옵니다.
\uXXXX에 동반자가 필요한 이유는 그것이 UTF-16 이스케이프이고, UTF-16에는 16진수 네 자리만큼의 자리밖에 없기 때문입니다. U+FFFF를 넘어가는 문자는 서로게이트 쌍으로 적어야 합니다. 웃는 얼굴은 U+1F600이고 자바스크립트 문자열에서는 \uD83D\uDE00, 한 글자를 뜻하는 이스케이프 두 개입니다. 더 새로운 \u{1F600}은 같은 것을 한 덩어리로 말하고, HTML 형태로는 😀과 😀입니다. 넷 다 같은 문자이고, 기계 장치가 드러나는 것은 첫 번째뿐입니다.
그 기계 장치를 이해해 둘 가치가 있는 이유는 그것이 새어 나오기 때문입니다. D800부터 DFFF까지의 값은 쌍의 두 반쪽을 위해 예약돼 있고 그 자체로는 문자가 아닙니다. 그래서 잘못된 위치에서 문자열을 자르거나 UTF-16 단위로 세어 잘라 내면서 생긴 외톨이 서로게이트는 유효한 텍스트가 아니며 UTF-8로 인코딩할 수조차 없습니다. 자바스크립트 문자열 안에서는 멀쩡히 살아남았다가, 무언가가 그것을 파일이나 네트워크 소켓에 쓰려는 순간 실패합니다. 만들어진 자리에서 한참 떨어진 곳에서 말이죠.
실무적인 쓸모는 비아스키 문자를 믿을 수 없는 경로로 통과시키는 것입니다. UTF-8을 망가뜨리는 빌드 파이프라인, 인코딩이 불확실한 설정 형식, 아스키 바이트만 받는 시스템 같은 곳에서, 비아스키 문자를 전부 이스케이프하면 데이터가 온전히 살아남고 diff도 가능해집니다. 대가는 사람이 읽을 수 없게 된다는 것입니다. 일상적으로는 반대 방향이 더 흔합니다. 로그나 스택 트레이스에서 이스케이프된 문자열을 붙여 넣어 실제로 무슨 말이었는지 알아내는 일 말입니다. 모든 처리는 브라우저에서 이뤄집니다.
자주 묻는 질문
이모지는 어떻게 처리되나요?
\uXXXX 형식에서 U+FFFF를 넘는 문자(예: 😀)는 두 개의 \u 이스케이프(서로게이트 쌍)로 표현됩니다. U+ 및 HTML 형식은 단일 코드포인트(예: U+1F600, 😀)를 씁니다. 디코딩은 어느 쪽이든 올바르게 복원합니다.
디코더는 무엇을 읽을 수 있나요?
\uXXXX, \u{XXXXX}, \xXX, U+XXXX, &#xHEX;, &#DEC; 를 자동 인식하며, 같은 입력에 섞여 있어도 모두 디코딩됩니다.
‘모든 문자 이스케이프’는 무엇을 하나요?
끄면 비ASCII 문자만 이스케이프하고 일반 ASCII는 그대로 둡니다. 켜면 모든 문자를 이스케이프로 변환하여 완전 난독화나 엄격한 ASCII 출력에 편리합니다.
텍스트가 업로드되나요?
아니요. 인코딩과 디코딩은 전적으로 브라우저에서 이뤄지며 서버로 전송되지 않습니다.
U+00E9ABC가 왜 엉뚱한 문자로 디코딩되나요?
U+ 패턴이 16진수를 1~6자리까지 받고 가능한 한 많이 가져가기 때문입니다. 그래서 00E9AB를 삼키고 C만 남겨, é 뒤에 ABC가 아니라 한중일 통합 한자인 U+E9AB가 나옵니다. U+ 표기 바로 뒤에 16진수처럼 보이는 글자가 이어지면 항상 같은 문제가 생깁니다. 코드 포인트 뒤에 공백이나 16진수가 아닌 문자를 두거나, 세미콜론으로 끝나 과잉 판독이 불가능한 é 형식을 쓰세요.
디코더가 진짜 이스케이프와 이스케이프된 역슬래시를 구분하나요?
못 합니다. 디코딩은 이스케이프의 이스케이프라는 개념이 없는 패턴 치환의 연속이라서, 역슬래시 두 개 뒤에 u0041이 오는 입력은 대부분의 언어에서 역슬래시 하나와 문자열 u0041을 뜻하지만 여기서는 역슬래시 A로 돌아옵니다. 입력이 이미 역슬래시를 두 배로 쓴 소스 코드 문자열이라면 붙여넣기 전에 절반으로 줄이세요. 렌더링된 텍스트에서 그냥 복사해 온 이스케이프는 영향이 없습니다.
이 주제의 가이드
관련 도구
문자열 이스케이프 변환기
한 입력으로 10개 컨텍스트 이스케이프 출력 — JavaScript, JSON, HTML 엔티티, URL, SQL, regex, Bash(단·이중 따옴표), C 문자열, Unicode \u. 필요한 것을 복사.
개발
보이지 않는 / 제로폭 문자 탐지기
붙여넣은 텍스트의 NBSP·제로폭·양방향 마크·탭을 찾아내고 한 번에 정리.
개발
HTML 엔티티 인코더 / 디코더
HTML 특수문자(& < > " ')를 이스케이프하거나 엔티티를 원문으로 디코드합니다.
개발
Punycode 변환기
국제화 도메인을 Unicode(münchen.de)와 Punycode ASCII(xn--mnchen-3ya.de) 간 변환.
개발
cURL → fetch / axios 변환
cURL 명령 붙여넣기 → 헤더·바디·메서드·기본인증까지 처리된 JS fetch / axios 코드.
개발
URL 인코더 / 디코더
URL용으로 텍스트를 퍼센트 인코딩하거나, 인코딩된 URL을 디코딩하세요.
개발