URL 인코더 & 디코더

URL과 쿼리 문자열용으로 텍스트를 퍼센트 인코딩하고, 인코딩된 URL을 디코딩하며, URL을 구성 요소와 디코딩된 쿼리 파라미터로 분해합니다.

브라우저에서 실행가입 불필요업로드 없음

인코딩 결과

URL 인코딩 / 디코딩 사용 방법

  1. 인코딩 또는 디코딩을 선택합니다.
  2. 인코딩할 때는 쿼리 값 하나나 경로 세그먼트에는 컴포넌트를, URL 구조를 유지하려면 전체 URL을, 폼 데이터는 application/x-www-form-urlencoded용으로 고릅니다.
  3. 텍스트를 붙여넣으면 결과가 즉시 나타나며, 잘못된 이스케이프는 위치와 함께 표시됩니다.
  4. 전체 URL을 URL 파서에 붙여넣으면 호스트, 경로, 프래그먼트와 디코딩된 모든 쿼리 파라미터를 볼 수 있습니다.

URL 인코딩이란?

URL에는 제한된 ASCII 문자만 쓸 수 있습니다(RFC 3986). 공백, 한글 같은 비영어 문자, &, ?, #처럼 특별한 의미가 있는 문자는 UTF-8 바이트마다 퍼센트 기호와 16진수 두 자리로 씁니다. 공백은 %20, é는 %C3%A9가 됩니다.

encodeURIComponent와 encodeURI의 차이

함수인코딩하지 않는 문자용도
encodeURIComponentA-Z a-z 0-9 - _ . ~쿼리 값 하나, 경로 세그먼트, 파라미터 이름
encodeURI위에 더해 : / ? # [ ] @ ! $ & ' ( ) * + , ; =구조가 유지되어야 하는 URL 전체

쿼리 값에 encodeURI를 쓰는 것은 전형적인 버그입니다. 값 안의 &가 이스케이프되지 않아 파라미터가 둘로 쪼개집니다. 이 도구의 컴포넌트 모드는 RFC 3986을 엄격히 따르기 위해 ! ' ( ) *도 이스케이프합니다.

공백은 %20인가요, +인가요?

경로에서는 공백이 반드시 %20이어야 합니다. HTML 폼 전송(application/x-www-form-urlencoded)과 많은 쿼리 문자열에서는 공백을 +로 씁니다. 디코딩할 때 폼 데이터라면 +를 공백으로 처리를 켜고, jane+test@example.com처럼 플러스 기호 자체가 중요하면 끄세요.

자주 묻는 질문

디코딩할 때 “잘못된 이스케이프” 오류가 나는 이유는 무엇인가요?
% 뒤에는 정확히 16진수 두 자리가 와야 합니다. “50% 할인”처럼 퍼센트 기호 자체는 %25로 인코딩되어 있어야 합니다. 오류에 잘못된 부분의 위치가 표시됩니다.
“잘못된 UTF-8 바이트 시퀀스”는 무슨 뜻인가요?
바이트가 UTF-8로 인코딩되지 않았다는 뜻입니다. Latin-1을 쓰는 레거시 시스템에서 만든 텍스트(예: é를 %C3%A9 대신 %E9로 표기)이거나, 문자열이 문자 중간에서 잘린 경우가 많습니다.
URL 전체를 인코딩해야 하나요, 파라미터만 해야 하나요?
각 파라미터 이름과 값을 컴포넌트 인코딩으로 따로 인코딩한 뒤 =와 &로 이으세요. 전체 URL을 컴포넌트 모드로 인코딩하면 ://까지 이스케이프되어 URL이 깨집니다.
이중 인코딩이 문제가 되나요?
네. 이미 인코딩된 문자열을 다시 인코딩하면 %20이 %2520이 됩니다. %25 뒤에 16진수가 보이면 값이 두 번 인코딩되었을 가능성이 높습니다. 두 번 디코딩하면 원래 값을 되찾을 수 있습니다.

관련 도구