유틸리티

URL 인코딩이란? 한글 깨짐 해결과 디코딩 방법 정리

브라우저 주소창에 한글을 넣었더니 %ED%95%9C%EA%B8%80처럼 알 수 없는 문자열로 바뀌어 있다. 이건 깨진 게 아니라 URL 인코딩이 적용된 정상적인 상태다.

URL 인코딩이 필요한 이유

URL에는 영문, 숫자, 일부 특수문자만 직접 쓸 수 있다. 한글, 공백, 특수기호는 그대로 넣으면 서버가 제대로 해석하지 못한다. 그래서 이런 문자를 %XX 형태의 바이트 코드로 바꾸는 게 URL 인코딩(퍼센트 인코딩)이다.

  • 한글 "가": UTF-8로 3바이트 → %EA%B0%80
  • 공백: %20 또는 +
  • & 기호: %26 (쿼리 구분자와 겹치므로 인코딩 필수)

인코딩 vs 디코딩

방향입력결과용도
인코딩한글%ED%95%9C%EA%B8%80URL에 한글 포함 시
디코딩%ED%95%9C%EA%B8%80한글인코딩된 URL 읽을 때

개발에서 자주 마주치는 상황

API 파라미터에 한글이 들어갈 때

검색 API에 ?query=서울맛집을 넣으면 한글 부분을 인코딩해야 서버가 정상 처리한다. JavaScript에서는 encodeURIComponent() 함수를 쓴다.

로그에서 URL을 읽어야 할 때

서버 로그에 찍힌 URL이 퍼센트 인코딩 상태라 내용을 바로 알 수 없다. 디코딩하면 원래 한글 주소가 복원된다.

TIP 인코딩/디코딩을 코드 한 줄로 할 수 있지만, 긴 URL이나 여러 개를 한꺼번에 처리할 때는 URL 인코딩 변환 도구에 붙여넣는 편이 빠르다. 입력과 결과의 바이트 크기도 같이 표시되니까 데이터 확인도 동시에 된다.

URL에 한글이 깨져 보일 때 당황할 필요 없다. 인코딩된 상태일 뿐이고, 디코딩하면 원래 텍스트가 그대로 나온다.