URL 인코딩/디코딩 변환기 완벽 가이드
URL 인코딩(Percent Encoding, 퍼센트 인코딩)은 웹에서 데이터를 안전하게 전송하기 위해 특수문자, 한글, 공백 등 URL에 직접 사용할 수 없는 문자를 %XX 형식의 16진수 코드로 변환하는 표준 방식입니다. 이 도구는 JavaScript의 encodeURIComponent()와 decodeURIComponent() 함수를 기반으로 정확하고 신뢰할 수 있는 변환 결과를 제공합니다.
인터넷 주소(URL)는 ASCII 문자 집합 중 제한된 문자만 사용할 수 있도록 설계되었습니다. 한글이나 일본어, 중국어 같은 유니코드 문자, 공백, 앰퍼샌드(&), 등호(=), 물음표(?), 해시(#) 등의 특수문자를 URL에 포함하려면 반드시 퍼센트 인코딩을 거쳐야 합니다. 예를 들어, 한글 "안녕"은 UTF-8로 인코딩되면 6바이트가 되며, 각 바이트가 %EC%95%88%EB%85%95와 같이 퍼센트 기호와 16진수 값으로 표현됩니다.
본 URL 인코딩/디코딩 변환기는 실시간 변환 기능을 제공하여 텍스트를 입력하는 즉시 변환 결과를 확인할 수 있습니다. 인코딩 모드에서는 일반 텍스트를 URL 안전 문자열로 변환하고, 디코딩 모드에서는 퍼센트 인코딩된 문자열을 원래 텍스트로 복원합니다. 또한 각 문자별 유니코드 코드포인트, UTF-8 바이트 값, 퍼센트 인코딩 결과를 상세 테이블로 확인할 수 있어 개발 학습이나 디버깅에 매우 유용합니다.
퍼센트 인코딩이란?
퍼센트 인코딩(Percent-encoding)은 RFC 3986에 정의된 URI(Uniform Resource Identifier) 인코딩 표준입니다. URL에서 예약된 문자나 비ASCII 문자를 안전하게 표현하기 위해 각 바이트를 퍼센트 기호(%)와 2자리 16진수 값으로 변환합니다. 예를 들어, 공백 문자는 %20으로, 앰퍼샌드는 %26으로 변환됩니다. 이 방식을 통해 URL의 구조를 해치지 않으면서도 다양한 데이터를 안전하게 전달할 수 있습니다.
encodeURIComponent vs encodeURI의 차이
encodeURIComponent()는 URI의 구성 요소(쿼리 파라미터 값 등)를 인코딩할 때 사용하며, / ? & = # : 등 URI 구분자까지 모두 인코딩합니다. 반면 encodeURI()는 전체 URI를 인코딩할 때 사용하며, URI 구분자는 인코딩하지 않습니다. 본 도구는 가장 안전하고 널리 사용되는 encodeURIComponent()를 기본으로 사용합니다.
한글 URL 인코딩 원리
한글은 유니코드에서 U+AC00~U+D7AF 범위에 위치하며, UTF-8로 인코딩하면 한 글자당 3바이트를 차지합니다. 예를 들어 "가"(U+AC00)는 UTF-8로 0xEA 0xB0 0x80이 되고, 퍼센트 인코딩으로는 %EA%B0%80이 됩니다. 본 도구의 상세 분석 테이블에서 이러한 변환 과정을 문자 단위로 확인할 수 있습니다.
자주 묻는 질문 (FAQ)
Q. URL 인코딩은 왜 필요한가요?
A. URL은 ASCII 문자만 사용할 수 있도록 설계되었기 때문에, 한글, 특수문자, 공백 등을 URL에 포함하려면 퍼센트 인코딩으로 변환해야 합니다. 인코딩하지 않으면 브라우저나 서버가 URL을 올바르게 해석하지 못해 404 오류가 발생하거나 잘못된 페이지로 이동할 수 있습니다.
Q. 인코딩과 디코딩의 차이는 무엇인가요?
A. 인코딩은 일반 텍스트를 URL 안전 형식(%XX)으로 변환하는 것이고, 디코딩은 반대로 %XX 형식의 문자열을 원래 텍스트로 복원하는 것입니다. 예를 들어 "서울"을 인코딩하면 "%EC%84%9C%EC%9A%B8"이 되고, 이를 다시 디코딩하면 "서울"로 복원됩니다.
Q. encodeURIComponent와 encodeURI 중 어느 것을 사용해야 하나요?
A. 대부분의 경우 encodeURIComponent()를 사용하는 것이 안전합니다. 쿼리 파라미터의 값을 인코딩할 때는 반드시 encodeURIComponent()를 사용해야 합니다. encodeURI()는 전체 URL을 인코딩할 때만 사용하세요.
Q. 이 도구는 어떤 인코딩 방식을 사용하나요?
A. 본 도구는 JavaScript 표준 함수인 encodeURIComponent()와 decodeURIComponent()를 사용합니다. 이 함수들은 UTF-8 기반 퍼센트 인코딩을 수행하며, RFC 3986 표준을 따릅니다.
Q. 한글 한 글자가 왜 %XX%XX%XX 형태로 3개씩 변환되나요?
A. 한글은 유니코드에서 BMP(Basic Multilingual Plane)에 위치하며, UTF-8로 인코딩하면 3바이트를 차지합니다. 각 바이트가 퍼센트 인코딩되므로 한글 한 글자는 %XX%XX%XX 형태의 9자 문자열로 변환됩니다.
Q. 입력한 데이터가 서버로 전송되나요?
A. 아닙니다. 모든 인코딩/디코딩 변환은 사용자의 브라우저 내에서 JavaScript로 처리됩니다. 입력한 데이터는 외부 서버로 전송되지 않으며, 완전히 안전하게 사용할 수 있습니다.