URL 인코더
텍스트·URL을 퍼센트 인코딩으로 변환
encodeURIComponent — ?, &, =, #, / 포함 대부분의 특수문자를 인코딩
URL 인코딩(퍼센트 인코딩)이란?
URL 인코딩은 URL에 포함할 수 없는 문자를 퍼센트 기호(%)와 두 자리 16진수로 변환하는 방식입니다. 예를 들어 공백은 %20, 한글 '안'은 %EC%95%88으로 변환됩니다. 웹 브라우저와 서버 간의 데이터 전송, API 요청, 폼 데이터 전송 등에 필수적입니다.
encodeURIComponent vs encodeURI 차이
encodeURIComponent는 영문자·숫자·- _ . ! ~ * ' ( )를 제외한 모든 문자를 인코딩합니다. 쿼리 파라미터 값 하나를 인코딩할 때 사용합니다. encodeURI는 URL 구조에서 의미를 갖는 문자(: / ? & = # @)를 그대로 두고 나머지만 인코딩합니다. 전체 URL 주소를 인코딩할 때 적합합니다.
자주 묻는 질문
URL 인코딩(퍼센트 인코딩)이란 무엇인가요?
URL에 포함할 수 없는 문자를 % 기호와 16진수 두 자리로 변환하는 방식입니다. RFC 3986 표준에 따라 정의되며, 브라우저·서버·API 간 안전한 데이터 전달을 위해 사용됩니다.
공백이 %20이 되는 이유는?
공백(space)은 URL에서 허용되지 않는 문자입니다. RFC 3986에 따라 허용되지 않는 문자는 UTF-8 바이트값을 16진수로 표현해 퍼센트 인코딩해야 합니다. 공백의 ASCII 코드는 32(10진수)=20(16진수)이므로 %20이 됩니다.
encodeURIComponent와 encodeURI의 차이는?
encodeURIComponent는 쿼리 파라미터처럼 값 하나를 인코딩할 때 사용하며 ?, &, =, #, / 등도 인코딩합니다. encodeURI는 전체 URL을 인코딩할 때 사용하며 URL 구조 문자는 보존합니다.
인코딩이 필요 없는 문자는 어떤 것들인가요?
RFC 3986에서 정의한 비예약 문자(unreserved characters)는 인코딩 없이 URL에 그대로 사용할 수 있습니다: 영문 대소문자(A-Z, a-z), 숫자(0-9), 하이픈(-), 밑줄(_), 마침표(.), 물결표(~).
이중 인코딩 문제는 무엇인가요?
이미 인코딩된 문자열을 다시 인코딩하면 %20이 %2520이 되는 이중 인코딩 문제가 발생합니다. 입력값에 이미 % 시퀀스가 있는지 확인하거나, 인코딩 전에 먼저 디코딩하는 방법으로 방지할 수 있습니다.
한글/한자 등 CJK 문자는 어떻게 인코딩되나요?
한글 등 비ASCII 문자는 먼저 UTF-8 바이트 시퀀스로 변환된 후, 각 바이트가 퍼센트 인코딩됩니다. 예를 들어 '안녕'은 UTF-8로 EC 95 88 EB 85 95가 되어 %EC%95%88%EB%85%95로 인코딩됩니다.
HTML 폼 제출 시 URL 인코딩은 어떻게 되나요?
method=GET 폼은 데이터를 application/x-www-form-urlencoded 방식으로 인코딩하며 공백을 +로 표현합니다. method=POST + multipart/form-data는 URL 인코딩을 적용하지 않습니다. REST API에서는 %20이 더 표준적입니다.
REST API에서 URL 파라미터를 올바르게 인코딩하는 방법은?
쿼리 파라미터 이름과 값 각각에 encodeURIComponent를 적용한 후 name=value 형태로 조합하세요. 사용자 입력값을 인코딩 없이 URL에 직접 삽입하면 URL 구조가 깨지거나 보안 문제가 발생할 수 있습니다.