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 기준으로 인코딩해 결과가 다르게 나옵니다.
어떤 문제가 있었는지 알려주시면 빠르게 고치겠습니다. (회신이 필요하면 이메일을 남겨주세요)