인코딩과 이스케이프

URL 인코딩구성 요소, URI, 폼 값에 맞게

구성 요소, URI, 폼 값에 맞게

URL 인코딩

입력

결과

변환은 브라우저 안에서 처리합니다. 입력을 전송하거나 URL에 접속하지 않습니다.

변환 설정

encodeURIComponent 문자 규칙을 사용합니다. 공백은 %20, +는 %2B가 됩니다. 디코딩은 원래 +를 유지합니다.

UTF-8만 지원하며 한 번 디코딩합니다. 디코딩은 잘못된 % 표기와 UTF-8을 거부하고, 양방향 모두 단독 UTF-16 서로게이트를 거부합니다. 폼도 엄격히 검사하므로 URLSearchParams의 관대한 분석과 다릅니다.

입력: 1,048,576 UTF-16 단위, 출력: 4,194,304 단위까지. 빈 입력은 유효합니다. 붙여넣기 시 줄바꿈이 정규화될 수 있습니다.

텍스트를 입력하거나 예제를 불러오세요. 빈 입력은 빈 결과로 변환됩니다.

확인 후 최신 결과를 입력으로 옮기고 방향을 바꿉니다. 결과가 입력 한도를 넘으면 사용할 수 없습니다.

URL 인코딩은 쿼리 값을 준비하거나 복사한 주소와 폼 필드를 확인할 때 사용합니다. 먼저 변환 대상을 선택하세요. 같은 &, /, +도 데이터인지 주소의 구분자인지에 따라 의미가 달라집니다.

URL 디코딩은 UTF-8 퍼센트 인코딩을 한 번만 풉니다. 결과는 항상 일반 텍스트입니다. 주소나 스크립트처럼 보이는 내용도 접속하거나 실행하지 않고 살펴볼 수 있습니다.

이 URL 인코딩 도구를 사용하는 이유

구분자의 의미를 선택

URL 인코딩은 구성 요소, 전체 URI, 단일 폼 값을 구분합니다. 구성 요소는 구분자를 변환하고 URI는 구조를 유지하며 폼은 공백을 +로 표현합니다. 값에 들어 있는 &가 새 매개변수를 만들지 않도록 대상을 명확히 선택하세요.

추상 기호가 구성 요소, URI, 폼 값의 세 가지 경로를 지나는 그림.

실패한 원본 위치 확인

잘못된 % 표기와 UTF-8은 원본 입력의 행과 열로 표시하고 해당 행을 강조합니다. URL 인코딩 도구는 대체 문자로 문제를 숨기거나 일부만 디코딩된 결과를 내보내지 않습니다.

손상된 퍼센트 표기 종이 조각의 첫 위치를 표시하고 출력을 멈춘 그림.

대상을 정해 변환하기

01

방향과 대상 선택

URL 인코딩은 빈 입력과 구성 요소 인코딩으로 시작합니다. 값 하나를 붙여 넣거나 주소 구조를 유지하려면 전체 URI를 선택하세요. 폼에서는 a=1&b=2 전체를 하나의 값으로 취급하며 필드로 나누지 않습니다.

02

변환 시점 조절

자동 변환은 편집 후 350ms 기다립니다. 끄면 변환 버튼이 나타나고 Ctrl/Cmd+Enter로 수동 실행할 수 있습니다. 입력이나 옵션을 바꾸면 새 결과가 성공할 때까지 내보내기를 막습니다. 빈 입력도 유효합니다.

03

교체 전 미리보기

예제, 지우기, 역방향 변환은 적용 전에 미리보기를 표시합니다. 역방향 변환은 결과를 입력으로 사용하고 방향도 바꿉니다. 실행 취소는 입력·옵션·결과를 함께 복원합니다. 복사와 TXT 저장에는 전체 결과가 포함됩니다.

URL 인코딩의 구체적인 동작

구성 요소 퍼센트 인코딩

encodeURIComponent에 따라 ASCII 영문자, 숫자와 -_.!~*'()를 유지합니다. 공백은 %20, &는 %26, /는 %2F입니다. 기존 퍼센트 기호도 다시 %25로 인코딩합니다.

URI 구분자 유지

전체 URI 인코딩은 ;/?:@&=+$,#도 유지합니다. 디코딩은 해당 이스케이프와 원래 대소문자를 남겨 %2f가 그대로 %2f가 됩니다. 주소를 분석하거나 검증·수정하지 않습니다.

폼의 공백과 더하기

단일 폼 값은 ASCII 영문자, 숫자와 *-._만 유지합니다. 공백은 +, 문자로서의 +는 %2B가 됩니다. %2B를 디코딩한 +를 다시 공백으로 바꾸지 않습니다.

UTF-8 및 오류 위치

한글, 악센트 문자와 이모지를 UTF-8 바이트로 표현합니다. 행과 열은 1부터 시작하며 열은 UTF-16 코드 단위입니다. 잘못된 멀티바이트 시퀀스는 첫 % 위치를 표시합니다.

변환 규칙과 제한

세 가지 변환 대상
URL 인코딩은 JavaScript 구성 요소 규칙, URI 규칙, 엄격한 폼 값 규칙을 제공합니다. 별도의 엄격한 RFC 3986 인코더, 사용자 지정 문자 집합, 경로 전용 모드나 자동 감지는 없습니다.
잘못된 입력은 전체 실패
디코딩할 때 단독 %, %G1, 잘리거나 과도하게 긴 UTF-8, 인코딩된 서로게이트, U+10FFFF 초과 값은 거부합니다. 폼도 URLSearchParams의 관대한 대체 동작을 사용하지 않으며 키와 값을 나누지 않습니다.
한 번에 한 단계만 해제
%2520은 한 번 디코딩하면 %20이 됩니다. 재귀 디코딩이나 기존 이스케이프 자동 감지는 없습니다. 역방향 변환은 방향을 바꾸므로 추가 디코딩은 결과를 입력에 복사하고 디코딩을 선택해 수행하세요.
URL 요청이 아닌 텍스트 변환
입력 주소를 링크로 만들거나 방문·가져오기·검증하지 않습니다. Punycode, 쿼리 분석, Unicode 정규화도 하지 않습니다. 변환기는 줄바꿈을 바꾸지 않지만 편집기에 붙여 넣을 때 정규화될 수 있습니다.
추가 원본 텍스트 검사
두 방향 모두 단독 UTF-16 서로게이트를 거부해 텍스트 내보내기 중 대체 문자가 생기지 않게 합니다. 이는 도구의 추가 정책입니다. JavaScript 기본 URI 디코더 자체는 원본 단독 서로게이트를 허용할 수 있습니다.
고정 한도 내 전체 내보내기
입력은 1,048,576, 출력은 4,194,304 UTF-16 코드 단위까지입니다. 미리보기는 최대 20,000단위이며 복사와 다운로드는 전체를 사용합니다. 출력 초과 시 전체가 실패하고 파일 가져오기는 제공하지 않습니다.

URL 인코딩 질문

+ 기호가 공백으로 변환되지 않아요

구성 요소와 URI 디코딩은 원래 +를 그대로 유지합니다. 폼 값에서만 +를 공백으로 해석하므로, 입력이 폼 인코딩된 값이면 단일 폼 값을 선택하세요. %2B는 디코딩 후 문자 +로 남습니다.

이중 인코딩(double encoding)이란?

이미 인코딩된 %를 다시 %25로 바꾸는 것입니다. 예를 들어 %20은 %2520이 됩니다. 한 번의 디코딩은 한 단계만 되돌리므로, 필요한 단계 수를 확인하고 추가 작업을 실행하세요.

입력한 URL이 외부로 전송되나요?

아니요. 변환은 현재 브라우저에서 실행하고 입력은 전송하지 않습니다. URL은 일반 텍스트로 취급하며 해당 주소에 접속하지 않습니다. 최신 결과를 복사하거나 TXT로 저장할 수 있습니다.

디코딩할 때 왜 오류가 나나요?

% 뒤의 16진수 두 자리가 없거나 바이트 시퀀스가 유효한 UTF-8이 아닐 수 있습니다. 표시된 원본 행과 열을 확인하세요. 도구는 단독 UTF-16 서로게이트도 거부하며 부분 결과는 제공하지 않습니다.

중국어와 이모지도 처리되나요?

네. 한글, 중국어, 일본어와 유효한 이모지는 UTF-8 바이트로 바꾼 뒤 각 바이트를 %와 두 자리 16진수로 표시합니다. 예를 들어 中은 %E4%B8%AD가 됩니다. GBK 같은 다른 문자 인코딩은 지원하지 않습니다.

퍼센트 인코딩 예외를 발견하셨나요?

짧은 값으로 URL 인코딩 사용하기

대상을 선택해 퍼센트 표기를 비교하고 변환이 성공하면 전체 결과를 복사하세요.