URL 인코딩이란?
URL 인코딩(퍼센트 인코딩)은 URL에서 사용할 수 없는 문자(한글, 특수문자, 공백 등)를 %XX 형식의 안전한 ASCII 문자로 변환하는 것입니다. 이를 통해 모든 문자를 URL에 안전하게 포함시킬 수 있습니다.
encodeURIComponent vs encodeURI 차이점
encodeURIComponent (권장)
쿼리 파라미터 값에 사용합니다. 모든 특수문자(:, /, ?, # 등)를 인코딩하여 안전합니다.
입력: a=1&b=2 → 출력: a%3D1%26b%3D2encodeURI
전체 URL에 사용합니다. URL 구조 문자(:, /, ?, #)는 유지하고 한글 등만 인코딩합니다.
입력: https://ex.com/검색 → 출력: https://ex.com/%EA%B2%80%EC%83%89활용 사례
쿼리 파라미터
검색어나 필터 값을 URL 파라미터로 전달할 때 한글을 인코딩합니다.
API 요청
REST API에 특수문자가 포함된 데이터를 전송할 때 사용합니다.
폼 데이터
HTML 폼을 GET 방식으로 전송할 때 자동으로 인코딩됩니다.
공유 링크
SNS 공유 링크에 한글 제목이나 설명을 포함할 때 사용합니다.
자주 묻는 질문
Q. URL 인코딩은 왜 필요한가요?
URL은 원래 ASCII 문자만 사용할 수 있도록 설계되었습니다. 한글이나 특수문자를 URL에 포함하려면 %XX 형식으로 변환해야 브라우저와 서버가 올바르게 처리할 수 있습니다.
Q. 공백은 %20인가요, +인가요?
URL 경로에서 공백은 %20으로 인코딩됩니다. 폼 데이터(application/x-www-form-urlencoded)에서는 +로 표현되기도 합니다. 일반적으로 %20을 사용하는 것이 안전합니다.
Q. encodeURIComponent와 encodeURI 중 뭘 써야 하나요?
쿼리 파라미터의 값을 인코딩할 때는 encodeURIComponent를 사용하세요. 전체 URL을 인코딩할 때는 encodeURI를 사용하지만, 대부분의 경우 encodeURIComponent가 더 안전합니다.
Q. 한글 URL이 %XX 형태로 길어지면 문제가 되나요?
인코딩된 URL이 길어 보여도 기능상 문제는 없습니다. 브라우저 주소창에서는 보기 좋게 디코딩되어 표시됩니다. 단, 일부 오래된 시스템에서는 URL 길이 제한이 있을 수 있습니다.