URL 인코딩 설명
업데이트 2026-07-06
검색어가 들어간 URL을 복사하면, 공백이나 악센트 문자가 있어야 할 자리에 %20이나 %C3%A9 같은 것이 보이는 경우가 많습니다. 그게 URL 인코딩이 동작하는 것입니다. 이 가이드는 그것이 무엇을 하는지, 왜 필요한지, 어떤 문자가 이스케이프되는지 설명합니다.
URL 인코딩이란
URL 인코딩 — 퍼센트 인코딩(percent-encoding)이라고도 합니다 — 은 그대로 두면 안전하지 않거나 모호할 문자를 URL 안에서 표현하는 방법입니다. 그런 문자 각각은 % 뒤에 16진수 바이트 값을 붙인 것으로 대체됩니다. 공백은 %20이, 앰퍼샌드는 %26이 됩니다.
왜 필요한가
URL은 제한된 문자 집합만 담을 수 있고, 그중 일부는 특별한 역할을 합니다: ?는 쿼리 문자열을 시작하고, &는 매개변수를 구분하며, /는 경로 세그먼트를 구분하고, #는 프래그먼트를 표시합니다. URL에 넣으려는 값이 이 중 하나를 담고 있다면, 구조가 아니라 데이터로 취급되도록 인코딩해야 합니다.
Search term: cats & dogs In a URL: ?q=cats%20%26%20dogs
인코딩하지 않으면 날것의 &가 새 매개변수의 시작으로 읽혀 검색이 깨질 것입니다.
예약 문자 vs. 비예약 문자
- 비예약(Unreserved) 문자 — 글자, 숫자, 그리고
- _ . ~— 는 항상 안전하고 결코 인코딩이 필요 없습니다. - 예약(Reserved) 문자 —
? & / # : @ =같은 것 — 는 특별한 의미가 있어, 문자 그대로의 데이터로 쓸 때는 인코딩해야 합니다. - 그 밖의 모든 것 — 공백, 악센트 문자, 이모지, 그리고 대부분의 기호 — 는 그 UTF-8 바이트에 따라 인코딩되며, 그래서 한 문자가 여러 개의
%xx쌍이 될 수 있습니다.
흔한 혼동: 더하기 기호
폼 제출의 쿼리 문자열에서는 공백이 때때로 %20이 아니라 +로 인코딩됩니다. 맥락에 따라 둘 다 “공백”을 뜻할 수 있어 사람들을 헷갈리게 합니다 — 헷갈릴 때는 %20이 언제나 안전합니다.
URL 인코딩 vs. Base64
이 둘은 서로 다른 문제를 풉니다. URL 인코딩은 텍스트를 URL 안에 넣기 안전하게 만듭니다. Base64는 바이너리 데이터를 텍스트 기반 채널을 통해 옮기기 안전하게 만듭니다. 둘은 때때로 결합되지만(Base64URL) 서로 바꿔 쓸 수 있는 것은 아닙니다.
값을 인코딩하거나 디코딩하려면 URL 인코더를 쓰고, 쿼리 문자열의 모든 매개변수를 뜯어보려면 쿼리 문자열 파서가 그것들을 읽기 좋은 목록으로 나눠 줍니다.
데이터 포맷 & 인코딩 더 보기
데이터 포맷 & 인코딩 가이드 전체 보기 →이 가이드에서 언급한 도구