URL 인코딩이란?
URL 인코딩(퍼센트 인코딩)은 URL의 특수 문자를 %와 16진수 코드로 변환하는 방식입니다. URL 인코딩의 원리와 필요한 이유를 알아보세요.
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 호출 매개변수
Try it yourself
텍스트 인코딩/디코딩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을 사용하는 것이 더 안전합니다.