URL Encoder
URL 인코딩/디코딩
URL Encoder 소개
URL 인코더/디코더는 퍼센트 인코딩(RFC 3986)을 사용하여 URL을 인코딩하고 디코딩하는 무료 온라인 도구입니다. 쿼리 파라미터, 폼 데이터, API 요청, 한글이나 특수문자가 포함된 URL을 다루는 웹 개발자에게 필수적인 도구입니다.
이 도구는 두 가지 인코딩 모드를 제공합니다. encodeURIComponent 모드는 개별 쿼리 파라미터 값을 인코딩할 때 사용하며(=, &, /, ?, # 등 모든 특수문자를 인코딩), encodeURI 모드는 URL 구조 문자를 보존하면서 전체 URL을 인코딩합니다. 이 차이를 정확히 이해하는 것이 이중 인코딩 버그와 프로덕션 환경에서의 URL 오류를 방지하는 핵심입니다.
모든 인코딩 및 디코딩 작업은 브라우저의 네이티브 JavaScript 함수를 사용하여 처리됩니다. 어떤 데이터도 서버로 전송되지 않으므로 API 키, 토큰 등 민감한 쿼리 파라미터가 포함된 URL도 안전하게 인코딩할 수 있습니다.
주요 기능
- 두 가지 인코딩 모드: 쿼리 파라미터용 encodeURIComponent와 전체 URL용 encodeURI
- 퍼센트 인코딩된 문자열을 원래 문자로 복원하는 URL 디코딩 기능
- 한글, 중국어, 일본어 등 비ASCII 문자의 완벽한 유니코드 인코딩 지원
- 선택된 모드에 따른 예약 문자(!, #, $, &, +, /, :, ;, =, ?, @) 적절한 처리
- 여러 줄 데이터나 대량 URL 파라미터 인코딩을 위한 넓은 텍스트 입력 영역
- 인코딩/디코딩 결과를 즉시 클립보드에 복사하는 원클릭 복사 버튼
- 잘못된 퍼센트 인코딩 시퀀스(예: 유효하지 않은 %XX 패턴) 즉각 오류 안내
- 인코딩 결과를 쉽게 확인할 수 있는 고정폭 글꼴 출력
자주 묻는 질문
URL 인코딩(퍼센트 인코딩)이란 무엇인가요?
URL 인코딩은 URL에 허용되지 않는 문자를 안전하게 전송할 수 있는 형식으로 변환하는 과정입니다. 각 문자는 퍼센트 기호(%)와 해당 문자의 16진수 ASCII 값 두 자리로 대체됩니다. 예를 들어 공백은 %20, 앰퍼샌드(&)는 %26, 한글 "한"은 %ED%95%9C이 됩니다. 이 방식은 RFC 3986에 정의되어 있습니다.
encodeURI와 encodeURIComponent의 차이점은 무엇인가요?
encodeURI는 전체 URL을 인코딩하되 URL에서 특별한 의미를 가진 문자(://?#[]@!$&'()*+,;=)를 보존합니다. 완전한 URL을 인코딩할 때 사용합니다. encodeURIComponent는 영문자, 숫자, - _ . ~ 를 제외한 모든 문자를 인코딩하며 개별 쿼리 파라미터 값 인코딩에 적합합니다. 파라미터 값에 encodeURI를 사용하면 &나 = 같은 문자가 인코딩되지 않아 쿼리 문자열 구조가 깨질 수 있습니다.
URL에서 어떤 문자를 인코딩해야 하나요?
URL에서 반드시 퍼센트 인코딩해야 하는 문자는 공백(%20 또는 +로 인코딩), 비ASCII 문자(한글, 한자, 악센트 문자 등), 그리고 특수 용도 이외로 사용되는 예약 문자(파라미터 값 안의 ?, #, &, = 등)입니다. 인코딩이 필요 없는 비예약 문자는 A-Z, a-z, 0-9, 하이픈(-), 밑줄(_), 마침표(.), 물결표(~)입니다.
URL에서 한글은 어떻게 인코딩되나요?
한글 문자는 먼저 UTF-8 바이트 시퀀스로 변환된 후 각 바이트가 퍼센트 인코딩됩니다. 예를 들어 한글 "가"는 UTF-8로 3바이트(EA, B0, 80)이며 %EA%B0%80으로 인코딩됩니다. 최신 브라우저는 주소 표시줄에 디코딩된 한글을 보여주지만, 서버로 전송할 때는 인코딩된 형태를 사용합니다.
이중 인코딩이란 무엇이고 어떻게 방지하나요?
이중 인코딩은 이미 인코딩된 문자열을 다시 인코딩하여 %20이 %2520이 되는 현상입니다(% 자체가 %25로 인코딩됨). URL을 인코딩한 후 다른 인코딩 함수를 거칠 때 흔히 발생합니다. 방지하려면 인코딩 전에 입력이 이미 인코딩되어 있는지 확인하세요. 이 도구의 디코딩 기능으로 먼저 확인하거나, 문자열에 기존 %XX 패턴이 있는지 점검할 수 있습니다.
공백은 %20과 + 중 어떤 것을 사용해야 하나요?
둘 다 공백을 나타내지만 사용 맥락이 다릅니다. %20은 표준 퍼센트 인코딩이며 URL 경로와 대부분의 상황에서 사용합니다. +는 HTML 폼 제출에 사용되는 application/x-www-form-urlencoded 형식에 특화되어 있습니다. 현대적 관행은 URL 경로에는 %20을, 쿼리 파라미터에는 %20 또는 +를 사용하는 것입니다. JavaScript의 encodeURIComponent는 %20을 사용합니다.
API에서 파라미터를 인코딩하지 않으면 왜 깨진 텍스트가 반환되나요?
&, =, # 같은 특수문자가 쿼리 파라미터에 인코딩 없이 포함되면 서버가 이를 리터럴 문자가 아닌 URL 구조 구분자로 해석합니다. 인코딩되지 않은 &는 파라미터 값을 여러 파라미터로 분리하고, =는 새로운 키-값 쌍을 생성하며, #은 이후 모든 내용을 잘라냅니다. 비ASCII 문자도 인코딩 없이는 서버의 문자 집합 설정에 따라 잘못 해석될 수 있으므로 파라미터 값은 반드시 encodeURIComponent로 인코딩해야 합니다.
인코딩된 구간과 일반 텍스트가 섞인 전체 URL도 디코딩할 수 있나요?
네. encodeURI(전체 URL) 모드를 선택하고, 입력 필드에 URL을 붙여 넣은 후 디코딩 버튼을 클릭하세요. decodeURI 함수가 퍼센트 인코딩된 문자를 원래 형태로 복원하면서 URL 구조 문자는 그대로 유지합니다. 이중 인코딩된 시퀀스(%2520 등)가 포함된 경우, 원래 문자를 완전히 복원하려면 디코딩을 두 번 실행해야 할 수 있습니다.