유틸리티

URL 인코딩이란, 한글 주소 깨짐 해결하는 법 (2026)

블로그 글 링크를 카카오톡으로 공유했는데 한글 부분이 %ED%95%9C%EA%B8%80 같은 문자열로 바뀌어 있다. 링크가 깨진 건 아닌데 보기가 불편하다. 이게 URL 인코딩이다.

URL 인코딩이 필요한 이유

URL에는 영문, 숫자, 일부 특수문자만 쓸 수 있다. 한글, 공백, 특수문자가 포함되면 브라우저가 이를 퍼센트 인코딩(%XX) 형태로 변환해서 서버에 전달한다. 이건 오류가 아니라 정상적인 동작이다.

인코딩
사람이 읽을 수 있는 문자를 URL에서 쓸 수 있는 형태로 변환. "한글" → %ED%95%9C%EA%B8%80
디코딩
인코딩된 문자를 원래 형태로 복원. %ED%95%9C%EA%B8%80 → "한글"

실무에서 자주 만나는 상황

  1. API 호출 시 파라미터에 한글이 들어갈 때 — 쿼리스트링에 한글을 그대로 넣으면 서버에서 인식 못 하는 경우가 있다. 인코딩해서 보내야 한다.
  2. 리다이렉트 URL에 특수문자가 포함될 때&, =, ? 같은 문자가 URL 구조와 충돌할 수 있다.
  3. 로그 분석에서 인코딩된 URL을 읽어야 할 때 — 서버 로그에 기록된 URL은 인코딩 상태라서 디코딩해야 어떤 페이지인지 알 수 있다.

encodeURI와 encodeURIComponent의 차이

함수변환 대상용도
encodeURI한글, 공백 등 (URL 구조 문자는 유지)전체 URL 인코딩
encodeURIComponent모든 특수문자 포함쿼리 파라미터 값 인코딩

전체 URL을 인코딩할 때는 encodeURI, 파라미터 값만 인코딩할 때는 encodeURIComponent를 쓴다. 잘못 선택하면 URL 구조가 깨질 수 있다.

바로 변환해보기

코드를 작성하지 않고도 URL 인코딩 변환 도구에 텍스트를 붙여넣으면 인코딩과 디코딩이 바로 된다. encodeURIComponent 옵션도 체크박스로 선택할 수 있어서 상황에 맞게 쓸 수 있다.

한글 URL이 깨져 보인다고 당황할 필요 없다. 인코딩된 상태가 정상이고, 원래 텍스트가 궁금하면 디코딩만 하면 된다.