URL 인코더 및 디코더 - URL과 쿼리 문자열 인코딩

URL과 쿼리 문자열용 텍스트를 퍼센트 인코딩하거나, 인코딩된 URL을 읽을 수 있는 텍스트로 디코딩하세요. 모든 작업은 브라우저에서 처리됩니다.

모드를 선택하고 텍스트를 붙여넣은 뒤 변환을 클릭하세요. 쿼리 문자열 값에는 구성 요소 인코딩, 전체 주소에는 전체 URL 인코딩, 디코딩에는 퍼센트 인코딩 문자열 복원을 사용합니다.

URL 인코더 및 디코더 - URL과 쿼리 문자열 인코딩
URL과 쿼리 문자열용 텍스트를 퍼센트 인코딩하거나, 인코딩된 URL을 읽을 수 있는 텍스트로 디코딩하세요. 모든 작업은 브라우저에서 처리됩니다.

& = ? / #를 포함한 모든 예약 문자를 인코딩합니다. 쿼리 문자열의 단일 값이나 경로 세그먼트에 사용하세요.

작동 방식: 예약되지 않은 문자 집합 밖의 문자를 UTF-8 바이트로 바꾼 뒤 각 바이트를 %XX 16진수 쌍으로 표시합니다. 구성 요소 인코딩은 encodeURIComponent, 전체 URL 인코딩은 encodeURI, 디코딩은 decodeURIComponent를 사용합니다.

URL 인코더 및 디코더 정보

URL에서 안전하게 전달할 수 있는 문자는 제한적입니다. 모든 웹 주소의 기반이 되는 RFC 3986은 문자, 숫자, 네 기호 - _ . ~로 구성된 작은 비예약 문자 집합을 정의하며, 이들은 어디에나 표시할 수 있습니다. 반면 ? & = / # 같은 예약 문자에는 구조적 의미가 있습니다. 일반 공백부터 악센트 문자와 CJK 문자까지 그 밖의 모든 문자는 퍼센트 인코딩해야 합니다. 문자를 UTF-8 바이트로 바꾸고 각 바이트를 퍼센트 기호와 두 자리 16진수로 표시하는 방식입니다. 이 URL 인코더와 디코더는 양방향 변환을 즉시 수행하고 브라우저 안에서만 실행되므로 붙여넣은 내용이 서버로 전송되지 않습니다. 이 도구는 JavaScript가 두 가지 인코딩 작업을 구분하기 때문에 세 가지 모드를 제공합니다. 구성 요소 인코딩은 encodeURIComponent를 사용해 모든 예약 문자를 이스케이프합니다. 검색어, 리디렉션 대상, 토큰, 쿼리 문자열에서 등호 뒤에 오는 값처럼 URL의 한 부분을 만들 때 적합합니다. 값에 &나 =가 있으면 그대로 둘 경우 매개변수가 둘로 나뉘지만, 인코딩하면 값을 온전히 유지할 수 있습니다. 전체 URL 인코딩은 encodeURI를 사용하며 이미 구조화된 전체 주소를 위한 것입니다. 공백, 따옴표, 꺾쇠괄호, 비ASCII 문자는 이스케이프하지만 : / ? & = #는 의도적으로 남겨 스킴, 호스트, 경로, 쿼리의 의미를 유지합니다. 전체 URL을 구성 요소 인코더로 처리하면 슬래시와 물음표까지 바뀌어 주소 구조가 망가집니다. 디코딩은 decodeURIComponent로 과정을 되돌립니다. %20을 공백으로, %26을 앰퍼샌드로, %C3%BC 같은 여러 바이트 시퀀스를 ü로 복원합니다. 긴 추적 링크를 읽거나 OAuth 리디렉션을 확인하거나 폼이 실제로 제출한 내용을 디버깅할 때 유용합니다. 두 개의 16진수 숫자가 뒤따르지 않는 잘못된 %가 있으면 쓰레기 결과 대신 명확한 오류를 표시합니다. API 호출용 쿼리 매개변수 준비, 공백 때문에 깨진 링크 수정, URL을 다른 URL 안에 넣기, 복잡하게 중첩된 리디렉션 체인 확인 등에 사용할 수 있습니다. 단, 퍼센트 인코딩은 전송 표기일 뿐 보안 기능이 아닙니다. 인코딩된 문자열은 쉽게 되돌릴 수 있으므로 숨겨진 정보로 취급하지 말고, 디코딩한 입력은 항상 서버에서 검증하세요.

URL 인코딩 예시

세 가지 모드가 예약 문자, 공백, 비ASCII 텍스트를 처리하는 방식을 확인하세요.

입력출력참고
price=1+2 (구성 요소 인코딩)price%3D1%2B2=와 +는 쿼리 문자열의 예약 문자이므로 구성 요소 인코더가 %3D와 %2B로 이스케이프합니다.
https://example.com/my files/report 2024.pdf (전체 URL 인코딩)https://example.com/my%20files/report%202024.pdf공백은 %20이 되고 스킴과 슬래시는 그대로 유지됩니다.
na%C3%AFve (디코딩)naïve2바이트 UTF-8 시퀀스 %C3%AF가 문자 ï 하나로 디코딩됩니다.
50% off (구성 요소 인코딩)50%25%20off리터럴 퍼센트 기호 자체를 %25로 인코딩해야 디코더가 뒤의 내용을 잘못 읽지 않습니다.

URL을 인코딩하거나 디코딩하는 방법

  1. 모드를 선택하세요. 단일 값은 구성 요소 인코딩, 완전한 주소는 전체 URL 인코딩, 복원은 디코딩을 사용합니다.
  2. 텍스트나 URL을 입력 상자에 붙여넣으세요.
  3. 변환을 클릭하면 결과가 출력 상자에 즉시 나타납니다.
  4. 출력을 필요한 곳에 복사하거나 지우기를 클릭해 다시 시작하세요.

URL 인코더 및 디코더 FAQ

encodeURIComponent와 encodeURI의 차이는 무엇인가요?
encodeURIComponent는 / ? & = #를 포함한 모든 예약 문자를 이스케이프하므로 쿼리 매개변수 같은 개별 값에 사용합니다. encodeURI는 구조 문자를 그대로 두고 어디서나 안전하지 않은 문자만 이스케이프하므로 전체 URL에 사용합니다. 도구에서는 각각 구성 요소 인코딩과 전체 URL 인코딩으로 제공합니다.
공백이 +가 아니라 %20이 되는 이유는 무엇인가요?
%20은 URL에서 공백을 나타내는 표준 퍼센트 인코딩입니다. + 규칙은 HTML 폼에서 사용하는 오래된 application/x-www-form-urlencoded 형식에서 유래했으며 쿼리 문자열 안에서만 적용됩니다. 이 도구는 항상 %20을 출력하고, 디코딩할 때 +는 리터럴 더하기 기호로 남깁니다. 폼 데이터를 디코딩한다면 먼저 +를 %20으로 바꾸세요.
디코딩할 때 오류가 발생하는 이유는 무엇인가요?
% 뒤에 유효한 16진수 두 자리가 없으면 decodeURIComponent가 오류를 발생시킵니다. 할인 문구 속 리터럴 퍼센트 기호나 중간에 잘린 문자열이 예입니다. 디코딩하기 전에 입력이 제대로 퍼센트 인코딩되었고 완전한지 확인하세요.
악센트, CJK, 이모지 같은 비ASCII 문자는 어떻게 인코딩되나요?
문자를 먼저 UTF-8 바이트 시퀀스로 바꾼 다음 각 바이트를 %XX로 표시합니다. 악센트 문자는 보통 두 개의 이스케이프 쌍이 되고 이모지는 네 개가 됩니다. 디코딩은 바이트를 다시 조합해 UTF-8로 해석하고 원래 문자를 정확히 복원합니다.
전체 URL을 구성 요소 인코딩으로 인코딩해야 하나요?
아니요. 구성 요소 인코더는 URL 구조를 이루는 콜론, 슬래시, 물음표를 이스케이프하므로 주소가 깨집니다. 전체 URL에는 전체 URL 인코딩을 사용하고, 구성 요소 인코딩은 삽입할 개별 값에만 사용하세요.
붙여넣은 내용이 서버로 전송되나요?
아니요. 변환은 JavaScript 내장 함수인 encodeURIComponent, encodeURI, decodeURIComponent를 사용해 브라우저에서만 실행됩니다. 따라서 토큰, 세션 ID, 비공개 경로가 포함된 URL도 기기 밖으로 나가지 않습니다.