가이드 목록

URL 예약 문자 완벽 정리

URL 인코딩 가이드

URL 명세(RFC 3986)는 문자를 크게 예약 문자(reserved)비예약 문자(unreserved)로 나눕니다. 이 구분을 알면 언제 인코딩해야 하고 언제 안 해도 되는지가 명확해집니다.

비예약 문자 (그대로 사용 가능)

알파벳 대소문자, 숫자, 그리고 - _ . ~ 네 가지 기호는 어떤 위치에서도 인코딩 없이 그대로 쓸 수 있습니다. 이 문자들은 인코딩해도 의미가 바뀌지 않으므로 보통 인코딩하지 않습니다.

예약 문자 (구조적 의미가 있음)

예약 문자는 URL의 구조를 나누는 역할을 합니다. 데이터의 일부로 쓰려면 반드시 인코딩해야 합니다.

encodeURI 와 encodeURIComponent 의 경계

encodeURI는 위 예약 문자를 보존합니다. 이미 완성된 전체 URL을 인코딩할 때 구조를 깨뜨리지 않기 위해서입니다. 반면 encodeURIComponent는 예약 문자까지 모두 변환합니다. 파라미터 값 하나처럼 URL의 조각을 넣을 때 안전합니다.

값 하나를 넣을 땐 encodeURIComponent, 전체 주소를 다룰 땐 encodeURI — 이 원칙만 기억하면 대부분의 실수를 피할 수 있습니다.