웹 주소에 한글이나 특수문자, 공백이 포함되면 링크가 깨지거나 오류가 납니다. 왜 이런 문제가 생기고, 어떻게 해결해야 할까요?
URL의 구조
URL은 프로토콜(https), 도메인(example.com), 경로(/page), 쿼리(?key=value)로 구성됩니다. 이 표준은 영문 알파벳, 숫자, 일부 특수문자만 허용합니다. 공백, 한글, &, = 같은 문자는 문제를 일으킬 수 있습니다.
문제가 생기는 경우
- 공백: "hello world"가 경로에 있으면 두 단어로 분리됨
- &: 쿼리 파라미터 구분자로 인식됨
- =: 키-값 구분자로 인식됨
- 한글: ASCII 범위를 벗어남
URL 인코딩이란?
문제가 되는 문자를 %XX 형태로 변환하는 것입니다. 공백은 %20, &는 %26, 한글은 UTF-8 코드로 변환됩니다. 예: "안녕" → "%EC%95%88%EB%85%95"
언제 인코딩이 필요한가?
| 상황 | 인코딩 필요 |
|---|---|
| 쿼리 파라미터 값 | O |
| 경로에 한글 포함 | O |
| 일반 영문 URL | X |
| 이미 인코딩된 URL | X (이중 인코딩 주의) |
온라인 인코딩
URL 인코딩 도구에 문제가 되는 부분을 붙여넣으면 바로 인코딩된 결과를 얻을 수 있습니다. 복사해서 URL에 사용하면 됩니다.
디코딩도 가능
%EC%95%88%EB%85%95 같은 인코딩된 문자열이 뭔지 알고 싶다면 디코딩하면 됩니다. 퍼센트 인코딩 변환기에서 디코딩 버튼을 누르면 원본 텍스트를 확인할 수 있습니다.
개발에서의 처리
JavaScript: encodeURIComponent() / decodeURIComponent()
Python: urllib.parse.quote() / urllib.parse.unquote()
프레임워크가 대부분 자동 처리하지만, 수동으로 URL을 조합할 때는 주의가 필요합니다.
흔한 실수
전체 URL을 인코딩하면 안 됩니다. "https://"까지 인코딩되면 링크가 작동하지 않습니다. URL 인코더는 필요한 부분만 선택적으로 처리하세요.