URL 인코딩, 또는 퍼센트 인코딩(Percent-Encoding)은 URL에 사용할 수 없는 문자(예: 특수문자, 한글 등)를 인터넷을 통해 안전하게 전송할 수 있는 형태로 변환하는 과정입니다. 웹 브라우저와 서버가 URL을 올바르게 해석하고 처리하기 위해 필수적입니다. URL 디코딩은 인코딩된 문자열을 원래의 형태로 되돌리는 반대 과정을 의미합니다.
RFC 3986 표준과 퍼센트 인코딩 방식
URL 인코딩은 국제 표준인 RFC 3986에 따라 정의됩니다. 이 표준에 따르면 URL에는 알파벳, 숫자 및 일부 예약되지 않은 특수문자(-, _, ., ~)만 포함될 수 있습니다. 그 외의 문자들은 퍼센트 인코딩 방식을 통해 변환됩니다. 인코딩 방식은 해당 문자의 UTF-8 코드 값을 16진수로 변환한 뒤, 앞에 % 기호를 붙이는 형태입니다. 예를 들어, 공백은 %20으로 인코딩됩니다.
주요 특수문자 인코딩 표
URL에서 자주 사용되는 주요 특수문자와 그에 해당하는 퍼센트 인코딩 값은 다음과 같습니다. API 요청이나 쿼리스트링 생성 시 참고하면 유용합니다.
특수문자
인코딩 값
특수문자
인코딩 값
(공백)
%20
!
%21
"
%22
#
%23
$
%24
%
%25
&
%26
+
%2B
,
%2C
/
%2F
:
%3A
=
%3D
?
%3F
@
%40
[
%5B
]
%5D
URL 인코딩의 주요 사용 사례
URL 인코딩은 API 파라미터 전달, 한글·다국어 URL 처리, 웹폼 데이터 전송 등 다양한 상황에서 웹 개발의 안정성과 데이터 무결성을 보장하기 위해 사용됩니다. RESTful API에 데이터를 요청할 때 쿼리 파라미터에 포함된 특수문자나 공백은 반드시 인코딩되어야 서버에서 정확한 값으로 인식할 수 있습니다. 한글 URL은 복사하거나 공유할 때 퍼센트 인코딩된 형태로 변환되어 시스템 간 호환성을 유지합니다.
자주 묻는 질문
Q
URL 인코딩(퍼센트 인코딩)이란 무엇인가요?
URL에 사용할 수 없는 문자(한글, 공백, 특수문자 등)를 %XX 형태로 변환하는 것입니다. 예를 들어 공백은 %20, 한글 "가"는 %EA%B0%80으로 인코딩됩니다.
Q
URL에서 인코딩이 필요한 문자는 무엇인가요?
한글, 공백, &, =, ?, #, + 등 URL에서 특별한 의미를 갖거나 ASCII가 아닌 문자는 인코딩이 필요합니다. 영문 알파벳, 숫자, -, _, ., ~ 등은 인코딩 없이 사용 가능합니다.
Q
encodeURI와 encodeURIComponent의 차이는 무엇인가요?
encodeURI는 전체 URL 구조를 유지하면서 인코딩(://?#@ 등은 유지)하고, encodeURIComponent는 모든 특수문자를 인코딩합니다. 쿼리 파라미터 값에는 encodeURIComponent를 사용해야 합니다.
Q
URL 인코딩과 HTML 엔티티의 차이는 무엇인가요?
URL 인코딩은 URL에서 특수문자를 안전하게 전송하기 위한 것이고, HTML 엔티티(&, < 등)는 HTML 문서에서 특수문자를 표시하기 위한 것입니다. 사용 목적과 적용 영역이 다릅니다.