사용 방법
- 인코딩을 고르고 원문을 입력하면 %인코딩된 결과가 바로 나옵니다. 주소창에서 복사한
%EC%84%9C...를 읽고 싶다면 디코딩을 고르세요. - 방식을 고릅니다. 쿼리 값 하나를 만들 때는
encodeURIComponent, 완성된 주소 전체를 다듬을 때는encodeURI가 맞습니다. - HTML 폼이 보낸 데이터(
a=1&q=서울+맛집)처럼 공백이+로 들어온 경우 + 를 공백으로를 켜 둡니다. - 아래 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 인코더를 쓰세요.