1. 홈
  2. 개발자
  3. URL 인코더·디코더

URL 인코더·디코더

%EC%84%9C 같은 주소를 한글로, 한글을 %인코딩으로. 쿼리 파라미터 표까지.

내 브라우저에서 처리 · 업로드 없음 오프라인 동작

쿼리 값·경로 조각 하나를 넣을 때. & = ? / # : 까지 모두 %로 바꿔 값이 주소 구조를 깨지 않게 합니다.

인코딩 결과
%EC%84%9C%EC%9A%B8%20%EB%A7%9B%EC%A7%91%20%26%20%EC%B9%B4%ED%8E%98%20(50%25%20%ED%95%A0%EC%9D%B8)
입력 길이 19자 → 결과 길이 97자

URL 분석

프로토콜
https:
호스트
shop.example.com
포트
8443
경로
/상품/목록
해시(#)
#리뷰
Origin
https://shop.example.com:8443
쿼리 파라미터 4개
#키값 (디코딩)
1category신발
2sortprice_asc
3tagsale
4tagnew

입력한 내용은 브라우저 안에서만 처리되며 서버로 전송되지 않습니다.

사용 방법

  1. 인코딩을 고르고 원문을 입력하면 %인코딩된 결과가 바로 나옵니다. 주소창에서 복사한 %EC%84%9C...를 읽고 싶다면 디코딩을 고르세요.
  2. 방식을 고릅니다. 쿼리 값 하나를 만들 때는 encodeURIComponent, 완성된 주소 전체를 다듬을 때는 encodeURI가 맞습니다.
  3. HTML 폼이 보낸 데이터(a=1&q=서울+맛집)처럼 공백이 +로 들어온 경우 + 를 공백으로를 켜 둡니다.
  4. 아래 URL 분석에 주소를 넣으면 프로토콜·호스트·포트·경로·해시와 쿼리 파라미터 표(디코딩된 값)를 보여줍니다.

encodeURIComponent와 encodeURI의 차이

URL 인코딩(RFC 3986 퍼센트 인코딩)은 글자를 UTF-8 바이트로 바꾼 뒤 각 바이트를 %XX로 씁니다. 한글 1자는 3바이트라 %EC%84%9C처럼 9글자가 됩니다. 두 함수는 그대로 두는 문자가 다릅니다.

문자 encodeURIComponent encodeURI
A–Z a–z 0–9 - _ . ! ~ * ' ( ) 그대로 그대로
; / ? : @ & = + $ , # 인코딩 그대로
공백 %20 %20
한글 서 %EC%84%9C %EC%84%9C

예를 들어 검색어 커피&차를 ?q= 뒤에 붙일 때 encodeURI를 쓰면 &가 남아 q=커피와 차라는 두 파라미터로 잘립니다. 값에는 항상 encodeURIComponent를 써야 q=%EC%BB%A4%ED%94%BC%26%EC%B0%A8처럼 하나로 유지됩니다.

주의할 점

  • + 와 %20: 주소의 쿼리 부분에서 +가 공백인 것은 HTML 폼 형식(application/x-www-form-urlencoded)의 규칙입니다. 일반 퍼센트 인코딩에서 +는 그냥 +이므로, 출처에 맞게 옵션을 고르세요. 아래 URL 분석의 파라미터 표는 브라우저의 URLSearchParams처럼 +를 공백으로 읽습니다.
  • 잘못된 % 인코딩: 100%처럼 % 뒤에 16진수 2자리가 없거나, 바이트 조합이 올바른 UTF-8이 아니면 디코딩할 수 없습니다. 몇 번째 글자에서 문제가 생겼는지 강조해 보여줍니다.
  • 두 번 인코딩: %20이 %2520으로 보인다면 이미 인코딩된 값을 한 번 더 인코딩한 것입니다. 디코딩을 두 번 해 보세요.

자주 묻는 질문

주소창의 한글이 복사하면 % 문자로 바뀌는 이유는?

URL에는 원래 ASCII 문자만 쓸 수 있어서, 브라우저가 화면에는 한글로 보여 주고 복사할 때는 퍼센트 인코딩된 실제 주소를 넘기기 때문입니다. 디코딩하면 다시 읽을 수 있습니다.

입력한 주소가 서버로 전송되나요?

아니요. 인코딩·디코딩·URL 분석은 모두 브라우저의 표준 함수로 처리하며 입력한 주소에 접속하지도 않습니다. 토큰이 들어 있는 콜백 URL도 안심하고 확인할 수 있습니다. 바이너리 데이터를 문자로 옮겨야 한다면 Base64 인코더를 쓰세요.

준비 중인 도구

필요한 도구가 없나요?

어떤 작업을 하고 싶은지 적어 주세요. 요청이 많은 도구부터 만듭니다.