유틸리티 소개

URL 한글이 깨져서 퍼센트 기호로 바뀌는 이유와 해결 방법

네이버 블로그 주소를 복사해서 붙여넣기 하면 한글이 퍼센트 기호랑 숫자로 바뀌어 있을 때가 있어요. 예를 들어 /맛집추천 이 %EB%A7%9B%EC%A7%91 이런 식으로 바뀝니다. 처음 보면 뭐가 잘못된 건가 싶은데, 이건 깨진 게 아니라 URL 인코딩이라는 정상적인 과정이에요.

왜 URL에 한글을 못 쓰나

URL은 원래 영문 알파벳, 숫자, 일부 특수문자만 사용할 수 있게 설계됐습니다. 한글이나 일본어, 중국어 같은 문자는 URL에서 그대로 쓸 수 없어요. 그래서 한글을 UTF-8로 변환하고, 그 바이트 값을 퍼센트 인코딩으로 표현합니다. 한글 한 글자가 3바이트니까 %XX%XX%XX 이런 식으로 길어지는 거예요.

URL 인코더를 써보면 어떤 원리인지 이해할 수 있어요. 맛집 이라는 한글을 넣으면 %EB%A7%9B%EC%A7%91으로 변환됩니다. 반대로 이 코드를 디코딩하면 다시 맛집으로 돌아와요. 쌍방향 변환이 됩니다.

실제로 문제가 되는 경우

인코딩된 URL을 카톡이나 문자로 보내면 받는 사람 입장에서 어떤 내용인지 한눈에 안 보입니다. 링크가 너무 길어 보이기도 하고요. 또 어떤 시스템에서는 인코딩된 URL을 한 번 더 인코딩해버려서 링크가 깨지는 경우도 있어요. %가 %25로 또 인코딩되면서 완전히 다른 URL이 되어버리죠.

이런 문제를 피하려면 가능하면 URL에 한글 대신 영어나 숫자를 쓰는 게 좋습니다. 블로그 포스트 주소를 맛집추천 대신 restaurant-recommend 이런 식으로 설정하면 공유할 때 깔끔해요.

인코딩 디코딩이 필요할 때

API 개발하거나 웹 크롤링할 때 URL 인코딩을 직접 다뤄야 할 때가 있습니다. URL 인코더로 빠르게 변환하고 결과를 확인할 수 있어요. encodeURI랑 encodeURIComponent 모드가 있어서 상황에 맞게 선택해서 쓰면 됩니다.