URL 인코딩·디코딩란?
URL에는 영문, 숫자와 일부 기호만 쓸 수 있어서 한글이나 공백은 퍼센트 인코딩(예: 한 → %ED%95%9C)으로 바꿔야 합니다. 주소창에 한글이 보이더라도 실제로 복사하면 %EC%84%9C…처럼 길게 바뀌는 이유가 바로 이것입니다.
이 도구는 JavaScript의 encodeURIComponent와 encodeURI 두 방식을 모두 지원하고, 잘못된 % 표기가 있으면 몇 번째 글자가 문제인지 알려 줍니다.
사용 방법
- 인코딩 또는 디코딩을 고르세요.
- 검색어나 파라미터 값 하나를 바꿀 때는 값 (Component), 주소 전체를 바꿀 때는 전체 주소 (URI)를 고르세요.
- 입력하는 즉시 결과가 나옵니다. ⇅ 결과를 입력으로를 누르면 반대 방향으로 다시 변환합니다.
- 아래 URL 분석에 주소를 넣으면 프로토콜, 호스트, 경로, 쿼리 파라미터를 나눠서 보여 줍니다.
encodeURIComponent와 encodeURI 차이
| 문자 | encodeURIComponent | encodeURI |
|---|---|---|
| 한글, 공백 | 인코딩 | 인코딩 |
| : / ? # & = + , ; @ $ | 인코딩 | 그대로 둠 |
| A-Z a-z 0-9 - _ . ! ~ * ' ( ) | 그대로 둠 | 그대로 둠 |
쿼리 값에 &나 =가 들어가면 encodeURI로는 파라미터가 잘못 나뉩니다. 값에는 항상 Component 방식을 쓰세요.
공백은 %20일까 +일까?
URL 표준(RFC 3986)에서 공백은 %20입니다. 다만 HTML 폼 전송 형식(application/x-www-form-urlencoded)에서는 공백을 +로 씁니다. 네이버·구글 검색 주소의 q=서울+맛집이 그 예입니다. 이런 주소를 디코딩할 때는 +를 공백으로를 켜세요.
자주 묻는 질문
디코딩하면 'UTF-8 문자로 해석할 수 없다'고 나와요.
오래된 국내 사이트는 한글을 EUC-KR로 인코딩해 한 글자가 %C7%D1처럼 2바이트로 표현됩니다. 이 도구와 현재 브라우저 표준은 UTF-8 기준이라 EUC-KR 주소는 해석하지 못합니다.
주소를 두 번 인코딩하면 어떻게 되나요?
%가 %25로 바뀌어 %25ED%2595…처럼 됩니다. 결과에 %25가 많이 보이면 이중 인코딩된 것이니 디코딩을 두 번 해 보세요.
한글 도메인도 인코딩되나요?
도메인은 퍼센트 인코딩이 아니라 퓨니코드(xn--로 시작)로 바뀝니다. URL 분석에서 한글 도메인을 넣으면 퓨니코드로 표시됩니다.