도구
가이드

URL 인코딩 / 디코딩

인코딩

URL 구성 요소 및 전체 URL의 퍼센트 인코딩(RFC 3986).

100% 클라이언트 백엔드 없음
입력
출력
이 페이지에서

URL 인코딩이란?#

URL은 이스케이프되지 않은 문자의 작은 집합(ASCII 문자, 숫자, -, _, ., ~ 같은 소수의 기호)만 담을 수 있습니다. 그 외의 모든 것(공백, &, 중국어 문자, 이모지, 심지어 경로 구분자가 아니라 데이터로 쓰인 /)은 퍼센트 인코딩 이스케이프 로 쓰여야 합니다. % 뒤에 16진수 두 개가 오는 형태로, 공백은 %20, 의 UTF-8 바이트는 %E4%B8%AD가 됩니다. URL 인코딩은 임의의 텍스트를 URL 안에서 안전하게 흐르게 하는 기계적 번역입니다.

자주 뭉뚱그려지는 두 가지 구분된 작업이 있으며, 이 도구는 옵션 선택기를 통해 둘 다 드러냅니다.

  • 구성 요소 모드 (JavaScript의 encodeURIComponent 경로)는 문자·숫자 또는 - _ . ! ~ * ' ( 중 하나가 아닌 모든 것 을 이스케이프합니다. 텍스트가 쿼리 매개변수·경로 세그먼트·프래그먼트에 넣으려는 단일 데이터 조각일 때 쓰세요. 그래야 구조적 의미를 가진 문자(/ ? & = #)가 무해한 리터럴 텍스트로 줄어듭니다.
  • 전체 모드 (encodeURI 경로)는 같은 안전하지 않은 바이트를 이스케이프하면서도 URL 자신의 구조적 문자(: / ? # [ ] @ ! $ & ' ( ) * + , ; =)는 의도적으로 그대로 둡니다. 이미 올바른 모양을 갖춘 완전한 URL에서 안의 리터럴 문자만 정리하고 싶을 때 쓰세요.

디코딩은 두 형태 모두 되돌립니다. 입력에 %GG(올바른 16진수가 아님)나 홀로 선 % 같은 malformed 이스케이프가 있으면, 도구는 추측하는 대신 오류를 드러내고 범인 위치를 가리킵니다.

사용 방법#

  1. 왼쪽 위의 토글에서 인코딩 또는 디코딩 을 고르세요.
  2. 옵션 에서 URL에 넣으려는 단일 값이면 구성 요소, 구조를 유지해야 하는 전체 URL이면 전체 를 고르세요.
  3. 왼쪽 입력 패널에 붙여넣으세요.
  4. 오른쪽 출력 패널에서 결과를 읽고 복사 를 누르세요.
  5. 예제 는 데모 문자열을 불러오고, 지우기 는 패널을 초기화합니다.

주요 기능#

  • 하나가 아니라 두 가지 실제 범위. 구성 요소와 전체는 encodeURIComponent / encodeURI 구분을 정확히 반영하여, 도구를 바꾸지 않고 단일 값을 이스케이프하거나 전체 URL을 정리할 수 있습니다.
  • 기본 UTF-8. non-ASCII 문자는 UTF-8 바이트 시퀀스로 인코딩됩니다(RFC 3986 이래의 표준). 中文은 단일 이스케이프된 Latin-1 덩어리가 아니라 %E4%B8%AD%E6%96%87가 됩니다.
  • 오류가 위치를 가리킵니다. 디코딩이 잘못된 % 이스케이프에 부딪히면, 상태 줄은 전체 입력을 버리는 대신 그 자리를 보고합니다.
  • 로컬 실행. 모든 것이 브라우저에서 일어나며, 붙여넣은 것은 아무것도 업로드되지 않습니다.

실전 예시#

a/b?c=d & e구성 요소 모드로 인코딩하면:

a%2Fb%3Fc%3Dd%20%26%20e

/%2F, ?%3F, =%3D, 공백은 %20, &%26이 됩니다. URL 구조로 읽힐 수 있는 문자가 모두 중화되었습니다. 전체 문자열을 하나의 쿼리 값에 끼워 넣는 올바른 형태입니다.

이제 전체 모드로 전환해 완전한 URL을 인코딩해 보세요.

https://example.com/path?q=hello world&lang=zh CN

결과는 프로토콜·슬래시·?·&를 그대로 유지하고 리터럴 공백만 이스케이프합니다.

https://example.com/path?q=hello%20world&lang=zh%20CN

이것이 두 모드의 차이를 한눈에 보여줍니다. 구성 요소는 모든 것을 데이터로 평면화하고, 전체는 URL 뼈대를 보존하며 정리가 필요한 바이트만 닦습니다.

FAQ#

구성 요소와 전체 중 어떻게 결정하나요?#

쿼리 문자열을 만드는 중이고 값 중 하나가 사용자 입력에서 왔다면, 그 값은 구성 요소 로 인코딩하세요. 이미 완전히 형성된 URL에 군더더기 문자(공백, 악센트)가 몇 개 있을 뿐이라면 전체를 전체 로 통과시키세요. 유용한 테스트: 출력이 여전히 링크로 동작하려면 ?, &, /가 필요한가? 그러면 전체를 쓰세요. 그 문자들이 실제로 데이터의 일부인가? 그러면 구성 요소를 쓰세요.

디코딩된 문자열에 %GG가 있는데 도구가 오류를 냅니다. 왜요?#

%는 항상 16진수 두 자리가 뒤따라야 합니다. %GG는 올바른 16진수가 아니어서 디코더는 이를 거부하고 위치를 보고합니다. 코드에서 URIError를 던질 같은 입력입니다. 원본이 %25(리터럴 %의 인코딩된 형태)를 보내도록 고치거나, malformed 이스케이프를 바로잡으세요.

쿼리 문자열을 조립하기 전에 인코딩해야 하나요, 후에요?#

각 값을 =&합치기 전에 인코딩하세요. 먼저 ?q=a & b를 조립하고 전체를 구성 요소 모드로 인코딩하면 =&까지 이스케이프되어 서버가 더 이상 구분자로 보지 않습니다. 조각을 인코딩한 뒤 조립하세요.

유니코드를 브라우저와 같은 방식으로 처리하나요?#

네. 최신 브라우저와 서버는 퍼센트 이스케이프가 UTF-8 바이트를 담는 것을 기대하며, 이 도구가 내보내는 것입니다. %E4%B8%AD가 됩니다. 레거시 단일 바이트 인코딩(Latin-1, GBK 등)을 기대하는 오래된 시스템을 디버깅 중이라면 바이트가 달라지며, 인코딩 전용 도구가 필요합니다.