URL 인코딩·디코딩

한글 등 URL을 퍼센트 인코딩으로 양방향 변환합니다.

‘파라미터’는 encodeURIComponent(=, &, ? 등도 인코딩), ‘전체 URL’은 encodeURI(URL 구조 문자는 보존)입니다.

검색 결과 주소를 복사해 붙였더니 %ED%95%9C%EA%B8%80 같은 문자열이 길게 이어져 있던 적이 있을 겁니다. 주소에 쓸 수 없는 글자를 안전한 형태로 바꾼 결과입니다.

이 도구는 그 변환을 양방향으로 해 줍니다. 쿼리 값 하나만 인코딩할지, 주소 전체를 인코딩할지 골라서 쓸 수 있습니다.

어떻게 계산되나요

두 인코딩 버튼의 차이

[인코딩(파라미터)]encodeURIComponent 방식이라 ? & = # / 같은 URL 구조 문자까지 모두 바꿉니다. q= 뒤에 들어갈 검색어처럼 값 하나를 만들 때 씁니다. [전체 URL 인코딩]encodeURI 방식이라 구조 문자는 그대로 두고 한글·공백처럼 주소에 쓸 수 없는 문자만 바꿉니다. 주소 전체를 그대로 넘길 때 적합합니다.

퍼센트 인코딩의 규칙

URL에는 아스키 문자 일부만 쓸 수 있어서, 나머지 문자는 UTF-8 바이트로 바꾼 뒤 각 바이트를 %XX 형태의 16진수로 적습니다. 한글 한 글자는 3바이트라 %EA%B0%80처럼 세 덩어리가 됩니다.

디코딩과 + 처리

[디코딩]%XX를 원래 문자로 되돌리며, 폼 전송에서 공백을 뜻하는 +도 공백으로 해석합니다. % 뒤 두 자리가 16진수가 아니면 오류가 나므로, 중간이 잘린 주소인지 먼저 확인하세요.

용어 정리

퍼센트 인코딩
URL에 쓸 수 없는 문자를 `%`와 16진수 두 자리로 바꾸는 표기법. URL 인코딩이라고도 부릅니다.
encodeURIComponent
값 하나를 인코딩하는 방식. `&`, `=`, `/` 같은 구분자까지 모두 변환합니다.
encodeURI
주소 전체를 인코딩하는 방식. `:`, `/`, `?`, `&` 등 URL 구조 문자는 남겨 둡니다.
쿼리스트링
주소의 `?` 뒤에 `이름=값&이름=값` 형태로 붙는 부분입니다.
예약 문자
`: / ? # [ ] @ & = +` 처럼 URL에서 특별한 뜻을 갖는 문자들입니다.

자주 묻는 질문

파라미터 인코딩과 전체 URL 인코딩 중 뭘 써야 하나요?

주소 전체를 다룬다면 [전체 URL 인코딩], `q=` 뒤 검색어처럼 값 하나를 만든다면 [인코딩(파라미터)]입니다. 값 안에 `&`나 `=`가 들어 있는데 파라미터용으로 인코딩하지 않으면, 서버가 그 지점부터 다른 파라미터로 잘못 읽습니다.

한글 주소는 꼭 인코딩해야 하나요?

브라우저 주소창은 한글을 보기 좋게 표시하지만, 실제 요청을 보낼 때는 퍼센트 인코딩으로 바꿔 전송합니다. 링크를 코드나 메일 본문에 직접 넣을 때는 인코딩된 형태가 더 안전합니다.

디코딩이 안 되고 오류가 납니다

`%` 뒤에 16진수 두 자리가 오지 않으면 해석에 실패합니다. 주소가 중간에서 잘렸거나, 이미 디코딩된 문자열에 `%` 기호가 그대로 들어 있는 경우가 흔합니다.

공백이 `+`로 되어 있는데 맞나요?

폼 전송(application/x-www-form-urlencoded)에서는 공백을 `+`로, 일반 URL 경로에서는 `%20`으로 표기합니다. 이 도구의 디코딩은 `+`를 공백으로 해석합니다.

같은 한글인데 인코딩 결과가 다른 곳과 다릅니다

문자 인코딩이 달라서일 수 있습니다. 이 도구는 UTF-8 기준이며, 오래된 시스템은 EUC-KR 기준으로 인코딩해 결과가 다르게 나옵니다.