URL 인코딩이란?

URL 인코딩(퍼센트 인코딩)은 URL의 특수 문자를 %와 16진수 코드로 변환하는 방식입니다. URL 인코딩의 원리와 필요한 이유를 알아보세요.

Definition
URL Encoding (퍼센트 인코딩, Percent-Encoding)

URL 인코딩(퍼센트 인코딩)은 URL의 특수 문자를 퍼센트(%) 기호 뒤에 해당 문자의 ASCII 코드를 16진수로 표현한 두 자리 숫자로 대체하는 메커니즘입니다. URL은 제한된 ASCII 문자 집합만 사용할 수 있고, 많은 문자가 URL 문법에서 특별한 의미를 가지므로 이 변환이 필요합니다.

URL 인코딩 작동 원리

문자는 ASCII/유니코드 값을 조회하고 16진수로 변환하여 인코딩됩니다: • 공백 → %20 (ASCII 32 = 0x20) • : → %3A (ASCII 58 = 0x3A) • / → %2F (ASCII 47 = 0x2F) • @ → %40 • ? → %3F • # → %23 예시: https://example.com/search?q=hello world → https://example.com/search?q=hello%20world

예약 문자 vs 비예약 문자

URL 문자는 두 가지 범주로 나뉩니다: • 비예약 문자 — 그대로 사용 가능: A~Z, a~z, 0~9, -, _, ., ~ • 예약 문자 — URL에서 특별한 의미를 가짐: : / ? # [ ] @ ! $ & ' ( ) * + , ; = 예약 문자는 구조가 아닌 데이터로 사용될 때 퍼센트 인코딩해야 합니다. 예를 들어 &가 포함된 쿼리 매개변수 값은 %26으로 인코딩해야 합니다.

URL 인코딩의 실제 사용

URL 인코딩은 일상적으로 항상 접하게 됩니다: • 검색 쿼리: google.com/search?q=api란 (쿼리 문자열에서 +도 공백으로 유효) • 폼 제출: 브라우저가 전송 전에 자동으로 폼 데이터를 인코딩 • 공백이 포함된 파일 경로: /내%20문서/파일.pdf • 비ASCII 문자: 한국어 → %ED%95%9C%EA%B5%AD%EC%96%B4 • 특수 문자가 포함된 API 호출 매개변수

URL 인코딩에 대하여

URL 인코딩은 RFC 3986으로 정의되어 있습니다. 웹은 URL에 허용되지 않는 문자가 포함된 데이터를 안전하게 전달하기 위해 URL 인코딩에 의존합니다. URL 인코딩이 없다면 공백, 앰퍼샌드(&), 비라틴 문자를 포함하는 URL은 모호하거나 유효하지 않게 됩니다. 현대 브라우저는 자동으로 인코딩을 처리하지만, 개발자는 API를 구축하고 사용자 입력을 처리할 때 이를 이해해야 합니다.

FAQ

%20은 왜 공백을 의미하나요?
공백 문자의 ASCII 코드는 32이며, 16진수로 20입니다. URL 인코딩은 16진수 값 앞에 %를 붙이므로 공백은 %20이 됩니다.
URL 인코딩과 Base64 인코딩의 차이점은 무엇인가요?
URL 인코딩은 URL에 안전하지 않은 개별 문자를 변환하면서 가독성을 유지합니다. Base64 인코딩은 64개의 출력 가능한 문자를 사용하여 바이너리 데이터를 텍스트로 변환합니다. 목적이 다르며 결과물도 다릅니다.
URL의 공백에 +와 %20 중 어느 것을 사용해야 하나요?
URL의 쿼리 문자열(?key=value)에서는 전통적으로 +도 공백으로 유효합니다(폼 인코딩). URL 경로 부분(/내%20파일)에서는 반드시 %20을 사용해야 합니다. %20은 어디서나 작동하므로 일관성을 위해 %20을 사용하는 것이 더 안전합니다.

관련 도구