기능
문자열 이스케이프 도구는 텍스트를 문자열 리터럴 안에 넣을 수 있는 형태로 바꾸고, 이스케이프된 문자열을 다시 일반 텍스트로 되돌립니다. JSON, JavaScript, Java와 C#, Python, SQL 문자열 리터럴, CSV 필드, XML 텍스트와 속성, 정규식, POSIX 셸 명령의 아홉 가지 대상을 지원합니다. 각 언어의 규칙을 따르므로 결과를 코드에 바로 붙여넣어도 문법 오류가 나지 않습니다.
여러 줄 메시지나 Windows 경로를 JSON 설정 파일에 넣거나, HTML 조각을 JavaScript 문자열에 담거나, 공백이 있는 파일 이름을 셸 스크립트용으로 따옴표 처리하거나, price (USD) 같은 검색어를 그대로 일치하는 정규식으로 바꿀 때 주로 씁니다.
사용 방법
- 「이스케이프」 또는 「언이스케이프」를 고르세요.
- 언어나 형식을 고르세요.
- 입력란에 텍스트를 붙여넣거나 「샘플」을 누르세요. 입력하는 대로 결과가 갱신됩니다.
- 출력을 복사하거나 「입력으로 사용」을 눌러 반대로 변환해 원래대로 돌아오는지 확인하세요.
JSON, JavaScript, Java/C#, Python에서는 비 ASCII 문자까지 모두 이스케이프할 수 있어서 어떤 파일 인코딩에서도 깨지지 않는 순수 ASCII 문자열을 얻을 수 있습니다.
예시
같은 줄을 대상별로 이스케이프한 결과입니다.
Input: He said "hi" in C:\Temp
JSON: He said \"hi\" in C:\\Temp
SQL: He said "hi" in C:\Temp (only ' is doubled)
Regex: He said "hi" in C:\\Temp
Shell: 'He said "hi" in C:\Temp'
형식별 규칙
- JSON: 따옴표, 백슬래시, 제어 문자를 이스케이프하며
JSON.stringify와 똑같습니다. - JavaScript: 작은따옴표, 백틱, 세로 탭, 줄 구분 문자 U+2028과 U+2029도 이스케이프합니다.
- Java / C#: 백슬래시 이스케이프와
\uXXXX. 언이스케이프할 때는 Java의 8진수 이스케이프와 C#의\x,\U도 받습니다. - Python:
\x,\u,\U를 포함한 백슬래시 이스케이프. 알 수 없는 이스케이프는 그대로 둡니다. - SQL: 표준 SQL 문자열 리터럴에 맞게 작은따옴표를 두 번 씁니다.
- CSV: 쉼표, 따옴표, 줄바꿈, 앞뒤 공백이 있으면 값을 큰따옴표로 감싸고 안쪽 따옴표를 두 번 씁니다.
- XML: 미리 정의된 다섯 개의 엔터티로 바꿉니다. 언이스케이프할 때는 숫자 문자 참조도 해석합니다.
- 정규식: 특별한 의미가 있는 모든 문자 앞에 백슬래시를 붙여 텍스트와 글자 그대로 일치하게 합니다.
- 셸: 값을 작은따옴표로 감쌉니다(POSIX 셸에서는 작은따옴표 안에서 어떤 확장도 일어나지 않습니다). 안쪽 따옴표는
'\''로 씁니다.
자주 묻는 질문
› 문자열 이스케이프란 무엇인가요?
문자열 리터럴 안에서는 문자열을 끝내는 따옴표나 줄바꿈처럼 특별한 의미를 가진 문자가 있습니다. 이스케이프는 이런 문자를 안전한 표기(보통 백슬래시와 글자 하나)로 바꿔서 소스 코드, 쿼리, 파일에 넣어도 깨지지 않게 하는 것입니다.
› 문자열을 감싸는 따옴표도 붙여넣어야 하나요?
아니요. 내용만 붙여넣으세요. 이스케이프 결과가 코드에서 따옴표 사이에 들어갈 부분입니다. 값 전체를 따옴표로 감싸는 CSV와 셸은 필요할 때 도구가 바깥 따옴표를 직접 붙입니다.
› SQL 이스케이프로 SQL 인젝션을 막을 수 있나요?
작은따옴표를 두 번 쓰면 올바른 문자열 리터럴이 되므로 쿼리를 직접 쓰거나 마이그레이션 스크립트를 준비할 때 유용합니다. 하지만 애플리케이션 코드에서는 문자열을 이어 붙여 SQL을 만들지 말고 반드시 매개변수화된 쿼리나 prepared statement를 쓰세요.
› 언이스케이프할 때 알 수 없는 이스케이프 시퀀스라고 나오는 이유는?
언어마다 허용하는 이스케이프가 다르기 때문입니다. 예를 들어 JSON에는 \x와 \0이 없으므로 선택한 언어가 거부할 첫 시퀀스의 위치를 알려 줍니다. Python은 실제 인터프리터처럼 \d 같은 알 수 없는 이스케이프를 그대로 둡니다.
› 텍스트가 업로드되나요?
아니요. 이스케이프와 언이스케이프는 브라우저에서 실행되며 서버로 아무것도 보내지 않습니다.