RUNWEBTOOLS
한국어
데이터 포맷 & 인코딩

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 인코더를 쓰고, 쿼리 문자열의 모든 매개변수를 뜯어보려면 쿼리 문자열 파서가 그것들을 읽기 좋은 목록으로 나눠 줍니다.

데이터 포맷 & 인코딩 더 보기

데이터 포맷 & 인코딩 가이드 전체 보기 →

이 가이드에서 언급한 도구