URL 인코더 · 디코더 및 Query String 파라미터 파서

HOT

웹 주소 퍼센트 인코딩/디코딩, 한글 깨짐 방지 및 URL Query String(?key=value) 표 형태 구조 분석

ADVERTISEMENT · TOP BANNER

Responsive 728x90 / 320x100 Ad Slot

(CLS Prevention Active · Zero Shift)
100% 브라우저 연산 (서버 전송 없음, 개인정보 안전)
Interactive Client Mode
URL 인코더 / 디코더 & Query 파라미터 파서
URL Input
Encoded URL

https://example.com/search?q=%EC%98%A4%EB%A5%B4%EB%B3%B4%ED%82%B7&category=%EA%B0%9C%EB%B0%9C%EC%9E%90&page=1&ref=google

Decoded URL

https://example.com/search?q=오르보킷&category=개발자&page=1&ref=google

Query String 파라미터 구조 (4개)
Key (파라미터명)Value (값)
q오르보킷
category개발자
page1
refgoogle
ADVERTISEMENT · HIGH CTR IN-FEED

Native In-Feed / High Viewability Ad Slot

(CLS Prevention Active · Zero Shift)

URL 퍼센트 인코딩(Percent-Encoding)과 RFC 3986 표준의 이해

URL(Uniform Resource Locator, RFC 3986)은 인터넷상의 리소스 위치를 지정하기 위해 엄격히 제한된 ASCII 문자 집합(영문 알파벳, 숫자, 일부 특수문자)만을 허용하도록 규격화된 프로토콜 표준입니다. 따라서 전 세계 다양한 언어의 비-ASCII 문자(한글, 일본어, 중국어, 아랍어, 키릴 문자 등)나 URL 구조 자체를 분할하는 예약 문자(`:`, `/`, `?`, `#`, `&`, `=`, `+`)를 웹 브라우저 주소창이나 API 쿼리 파라미터로 전송하려면, 반드시 안전한 텍스트 형태로 변환하는 '퍼센트 인코딩(Percent-Encoding 또는 URL 인코딩)'을 거쳐야 합니다.

퍼센트 인코딩은 1바이트의 16진수 값을 `%` 기호 뒤에 2자리의 Hex 숫자로 표기하는 원리입니다. 현대 웹 환경에서는 UTF-8 인코딩이 표준이므로, 3바이트로 표현되는 한글 '가'는 `%EA%B0%80`의 3개 바이트 시퀀스로 치환됩니다. 그러나 실제 웹 개발 현장에서 `encodeURI()`와 `encodeURIComponent()` 함수의 사용 범위를 혼동하여 전체 URL 주소의 슬래시(`/`)가 전부 인코딩되어 404 에러가 나거나, 이미 인코딩된 URL을 다시 인코딩하여 `%2520`과 같은 '이중 인코딩(Double Encoding)' 참사가 발생하는 경우가 매우 흔합니다.

오르보킷 URL 인코더 및 디코더는 단일 텍스트 문자열뿐만 아니라, 복잡한 URL의 쿼리스트링(`?key1=val1&key2=val2`)을 파싱하여 키-값 쌍의 대화형 표로 시각화해 줍니다. 파라미터별 개별 수정, 마케팅 UTM 파라미터 추가, 실시간 디코딩 미리보기를 제공하며, 100% 브라우저 로컬 연산으로 동작하여 민감한 개인 식별 토큰이나 비밀번호가 포함된 리다이렉트 URL도 외부 유출 없이 안전하게 디버깅할 수 있습니다.

RFC 3986 퍼센트 인코딩 메커니즘과 UTF-8 바이트 시퀀스

문자열을 UTF-8 바이트로 직렬화한 후 `%XX` 16진수 표기법으로 매핑하는 수학적 원리입니다.

UTF-8 가변 바이트와 퍼센트 인코딩 매핑 공식Mathematical Formulation
ASCII 문자 (1바이트): 'A' (0x41) → 'A' (보존) 공백 문자 (1바이트): ' ' (0x20) → '%20' (또는 '+') 한글 문자 (3바이트): '가' (0xEA 0xB0 0x80) → '%EA%B0%80'

예약 문자(Reserved Characters: ! * ' ( ) ; : @ & = + $ , / ? # [ ])는 문맥에 따라 인코딩 여부가 결정되며, 비예약 문자(Unreserved: A-Z, a-z, 0-9, -, _, ., ~)는 결코 인코딩되지 않습니다.

한글 검색어 '오르보킷'이 포함된 검색 쿼리스트링 인코딩
원본 텍스트'q=오르보킷'한글 3글자 포함
UTF-8 바이트 분해모(EC 9A A8), 두(EB 91 90), 킷(ED 82 B7)총 9개 바이트 생성
Hex 바이트 앞에 % 부여%EC%9A%A8%EB%91%90%ED%82%B727자 ASCII 문자열
최종 파라미터 합성https://orvokit.com/search?q=%EC%9A%A8%EB%91%90%ED%82%B7RFC 3986 유효 URL 완성

👉 모든 브라우저와 웹 서버가 깨짐 없이 동일하게 해석할 수 있는 표준 URL이 생성됩니다.

  • 비예약 문자(Unreserved Characters): 영문 대소문자(A-Z, a-z), 숫자(0-9), 하이픈(-), 언더스코어(_), 마침표(.), 물결표(~)는 RFC 3986에 의해 인코딩이 금지되어 있습니다.
  • 예약 문자(Reserved Characters): 콜론(:), 슬래시(/), 물음표(?), 앰퍼샌드(&), 등호(=) 등은 URL 체계의 구분자로 쓰이므로 데이터 영역에 들어갈 때만 `%XX`로 변환됩니다.
  • encodeURI vs encodeURIComponent: `encodeURI`는 프로토콜(`http://`)과 경로 구분자를 유지하지만, `encodeURIComponent`는 파라미터 값 내부의 슬래시까지 모두 `%2F`로 치환합니다.
  • 공백의 두 가지 표현: 쿼리스트링 영역에서는 관례적으로 플러스(`+`)가 공백으로 쓰이기도 하지만, 최신 표준 규격(RFC 3986)에서는 항상 `%20`으로 표현하는 것이 안전합니다.

주요 특수문자 및 기호의 URL 퍼센트 인코딩 대응표

웹 개발 시 쿼리스트링이나 헤더에서 자주 마주치는 핵심 특수문자 16진수 코드입니다.

문자 기호설명 및 명칭URL 인코딩 (Hex)주요 용도 및 주의사항
공백 (Space)빈 칸 공백%20 (또는 +)URL 경로에서는 %20 필수, 쿼리에서는 +도 허용
! (느낌표)Exclamation mark%21하위 구분자 (Sub-delimiter)
" (큰따옴표)Quotation mark%22JSON 문자열 파라미터 전송 시 인코딩 필수
# (샤프/해시)Fragment identifier%23페이지 앵커(Hash) 시작 기호
$ (달러)Dollar sign%24정규식 및 통화 기호
% (퍼센트)Percent sign%25인코딩 자체의 이스케이프 문자 (이중 인코딩 원인)
& (앰퍼샌드)Ampersand%26쿼리 파라미터 간의 구분자
' (작은따옴표)Single quote%27SQL 쿼리 파라미터 전달 시 주의
+ (더하기)Plus sign%2B인코딩하지 않으면 수신 서버에서 공백으로 오인
/ (슬래시)Forward slash%2FURL 경로 세그먼트 구분자
: (콜론)Colon%3A프로토콜(http:) 및 포트번호 구분자
= (등호)Equal sign%3D키와 값(key=value) 구분자
? (물음표)Question mark%3F경로와 쿼리스트링의 시작 경계 기호

* 더하기 기호(+)를 텍스트 그대로 전송하려면 반드시 '%2B'로 인코딩해야 공백으로 증발하지 않습니다.

ADVERTISEMENT · IN-ARTICLE CONTENT

High-Engagement In-Article Native Ad Slot

(CLS Prevention Active · Zero Shift)

사용 방법

11. 웹 주소(URL) 또는 텍스트 입력

인코딩하거나 디코딩할 전체 웹사이트 URL 주소, 쿼리 파라미터 문자열, 또는 한글 텍스트를 입력창에 붙여넣으세요.

22. 변환 모드(Encode / Decode) 및 함수 선택

URL 전체의 구조를 유지하는 `encodeURI` 모드와 파라미터 값 내부까지 엄격히 치환하는 `encodeURIComponent` 모드 중 목적에 맞게 선택하세요.

33. 대화형 Query String 파라미터 표 편집

URL에 포함된 `utm_source`, `query`, `page` 등의 파라미터가 자동으로 키/값 표로 파싱되며, 행을 직접 추가하거나 삭제하여 실시간 조작하세요.

44. 정제된 최종 URL 복사

인코딩/디코딩이 완벽하게 완료된 최종 URL 문자열을 원클릭으로 복사하여 브라우저 주소창이나 API 클라이언트에 붙여넣으세요.

실무 URL 인코딩 및 파라미터 가공 시나리오

웹 개발, 마케팅 트래킹, API 연동 시 필수적으로 쓰이는 사례들입니다.

OAuth 2.0 redirect_uri 파라미터 전달

카카오/구글 로그인 시 리다이렉트 콜백 주소 `https://site.com/callback?tab=1`을 `https%3A%2F%2Fsite.com%2Fcallback%3Ftab%3D1`로 완벽 인코딩.

마케팅 UTM 캠페인 링크 빌딩

페이스북, 구글 광고용 URL에 `utm_source=naver`, `utm_campaign=가을세일` 파라미터를 인코딩하여 깨짐 없는 추적 링크 생성.

REST API 한글 검색어 인라인 호출

Axios나 cURL로 검색 API 호출 시 한글 질의어를 `%EC%82%AC%EA%B3%BC` 형태로 사전에 안전하게 인코딩.

이중 인코딩 버그 복구

로그 파일이나 레거시 DB에 `%2520`, `%25EB%25AA%25A8` 형태로 2중 3중 깨진 텍스트를 원클릭 연속 디코딩으로 복원.

💡 URL 인코딩 설계 전문가 팁 & 치명적 버그 예방법

✓ 파라미터 값에는 항상 encodeURIComponent 사용

URL 전체에 `encodeURI()`를 적용한 뒤 파라미터 값 안에 슬래시나 앰퍼샌드가 들어가면 파라미터가 쪼개집니다. 값(Value) 단위로는 항상 `encodeURIComponent()`를 호출하세요.

✓ 더하기(+) 기호의 함정 주의

`c++`이나 전화번호 `+82`를 URL 파라미터로 보낼 때 `+`를 `%2B`로 인코딩하지 않으면 서버 측에서 빈 공백(`c `, ` 82`)으로 수신됩니다.

✓ URL 길이 제한 2,048자 인지

대부분의 모던 브라우저와 웹 서버(Nginx, Apache)는 2,048자를 초과하는 과도하게 긴 GET URL 요청에 대해 '414 URI Too Long' 에러를 반환합니다. 데이터가 크다면 POST 바디를 사용하세요.

✓ URLSearchParams 네이티브 객체 활용

자바스크립트 코드에서는 수동 문자열 결합 대신 브라우저 표준 `new URLSearchParams()` 객체를 사용하면 인코딩이 자동으로 안전하게 처리됩니다.

⚠️ 흔히 하는 실수 & 예방법

❌ 전체 URL 주소를 encodeURIComponent로 감싸기
✅ `https://example.com` 전체를 감싸면 `https%3A%2F%2Fexample.com`이 되어 프로토콜을 인식하지 못하고 400 에러가 발생합니다.
❌ 이미 인코딩된 URL을 재차 인코딩(이중 인코딩)
✅ `%20`이 다시 인코딩되어 `%2520`으로 변질되면 백엔드 디코더에서 공백이 아닌 문자 그대로 '%20'으로 복원됩니다. 중복 인코딩 여부를 확인하세요.
❌ 해시 앵커(#) 뒤의 파라미터 누락
✅ 브라우저에서 `#` 뒤의 프래그먼트는 웹 서버로 전송되지 않습니다. 서버로 전달해야 하는 파라미터는 반드시 `?` 뒤에 두어야 합니다.
❌ 인증 토큰이 담긴 URL을 외부 디코더 사이트에 전송
✅ 일부 온라인 디코더는 접속 로그에 전체 URL(API 토큰, 세션 파라미터 포함)을 남깁니다. 100% 브라우저 로컬 툴을 사용하세요.

자주 묻는 질문 (FAQ)

사용자 및 전문가들이 가장 자주 묻는 핵심 질문과 명확한 해답입니다.

6 Q&As

`encodeURI()`는 전체 인터넷 주소를 인코딩하기 위한 함수로, URL 문법의 뼈대를 이루는 콜론(:), 슬래시(/), 물음표(?), 앰퍼샌드(&), 해시(#) 등을 인코딩하지 않고 그대로 보존합니다. 반면 `encodeURIComponent()`는 쿼리스트링 파라미터에 들어갈 '개별 값(Value)'을 인코딩하기 위한 함수로, 데이터 내부의 슬래시나 앰퍼샌드가 URL 구조를 망가뜨리지 않도록 이들 기호까지 `%2F`, `%26` 등으로 전부 치환합니다.

ADVERTISEMENT · FOOTER BANNER

Wide Responsive Banner

(CLS Prevention Active · Zero Shift)