URL 인코더/디코더

URL을 인코딩하거나 디코딩하세요.

URL 인코더는 한국어·특수문자가 들어간 URL을 제대로 동작하게 만들어 줘요. API 호출, 검색 쿼리, 리다이렉트 처리에서 안 빼놓을 수 없는 도구거든요.

URL 인코딩이 필요한 이유

URL은 ASCII 문자만 안전해요. 한국어·이모지·공백·특수문자(&, =, ?, #)가 그대로 들어가면 서버가 잘못 파싱해요.

예시

  • 검색어=React → %EA%B2%80%EC%83%89%EC%96%B4%3DReact
  • hello world → hello%20world (또는 hello+world)

인코딩하면 서버·브라우저·중계 라우터 모두 같은 URL로 해석해요.

encodeURI vs encodeURIComponent

JavaScript에는 두 가지 함수가 있어요.

  • encodeURI: 전체 URL용. ?·&·=·#을 그대로 둬요.
  • encodeURIComponent: 쿼리값 한 조각용. 모든 특수문자 인코딩.

쿼리 파라미터 값을 인코딩할 때는 반드시 encodeURIComponent를 써야 해요. encodeURI를 쓰면 &·=이 그대로 남아서 다음 파라미터와 충돌해요.

이 도구는 encodeURIComponent 방식으로 인코딩해서, 주소 전체를 넣으면 ://·/·?까지 바뀌어요. 쿼리값이나 경로 한 조각만 넣으세요.

흔한 사고 패턴

  • 이중 인코딩: 이미 인코딩된 URL을 또 인코딩하면 %가 %25로 바뀌어 깨져요
  • 공백 처리: 쿼리에서는 + 또는 %20 둘 다 OK지만 path에서는 %20만 OK
  • # 처리: fragment 구분자라 인코딩 안 하면 그 뒤가 잘림
  • 한글 도메인: punycode(xn--...)로 별도 변환 필요. URL 인코딩이랑 다른 표준이거든요

자주 묻는 질문

이미 인코딩된 URL인지 어떻게 알아요?

% 뒤에 16진수 두 자리가 붙어 있으면 거의 인코딩된 거예요. %E, %2, %3 같은 패턴이 보이면 디코더로 먼저 풀어 본 뒤 다시 인코딩하세요.

한글 검색어 인코딩 결과가 길게 나오는 이유는?

한글 1글자가 UTF-8로 3바이트라서 인코딩하면 %XX%XX%XX 9자가 돼요. 영문 1글자는 인코딩 안 되거나 %XX 3자라서 짧게 보이는 거예요.

공백을 +로 할까 %20으로 할까?

URL path에서는 %20만 안전해요. 쿼리스트링에서는 둘 다 OK지만 일관성을 위해 %20을 권장해요. +=공백은 application/x-www-form-urlencoded 폼 인코딩 규칙(W3C)이라 path에 그대로 쓰면 진짜 더하기 기호로 오해돼요.

한글 도메인 주소는 이걸로 인코딩하나요?

아니요. 한글.kr 같은 국제화 도메인(IDN)은 URL 퍼센트 인코딩이 아니라 Punycode(xn--...)로 변환해야 해요. 도메인(호스트) 부분은 RFC 3987/IDNA 표준을 따르고, path·쿼리만 퍼센트 인코딩 대상이거든요.

출처 · 근거 자료