
웹 주소(URL)를 복사하다 보면 한글이나 특수문자가 %EC%9D%B8%EC%BD%94%EB%94%A9 같은 알 수 없는 문자로 바뀐 것을 본 적 있으시죠? 또는 개발 중에 URL 파라미터에 특수문자를 넣었더니 오류가 났던 경험도 있을 것입니다. 오늘은 URL 인코딩이 무엇인지, 왜 필요한지, 그리고 쉽게 변환하는 방법을 알아보겠습니다.
URL이란 무엇인가?
URL(Uniform Resource Locator)은 인터넷 자원의 위치를 나타내는 주소입니다. 우리가 브라우저 주소창에 입력하는 https://www.example.com/path?query=value 형태입니다.
URL은 다음 구성요소로 이루어집니다.
https://www.example.com:443/path/to/page?name=값&id=123#section
├── 스킴(scheme): https
├── 호스트: www.example.com
├── 포트: 443
├── 경로(path): /path/to/page
├── 쿼리 파라미터: name=값&id=123
└── 프래그먼트: #section
URL 인코딩이란?
URL에는 사용할 수 있는 문자가 제한되어 있습니다. RFC 3986 표준에 따르면 URL에서 안전하게 사용할 수 있는 문자는 영문자, 숫자, 그리고 일부 특수문자(-_.~)뿐입니다.
한글, 한자, 공백, 특수문자 등 URL에서 허용되지 않는 문자는 퍼센트 인코딩(Percent Encoding) 방식으로 변환해야 합니다.
퍼센트 인코딩 방식:
- 문자를 UTF-8로 인코딩
- 각 바이트를
%XX형식으로 표현 (XX는 16진수)
예시:
공백 → %20 (또는 + )
한글 '가' → %EA%B0%80
& → %26
= → %3D
+ → %2B
# → %23
URL 인코딩이 필요한 이유
모호성 제거:
URL에서 &는 파라미터 구분자, =는 키-값 구분자로 사용됩니다. 파라미터 값 안에 이런 문자가 포함되면 URL 파서가 혼란을 겪습니다.
잘못된 예:
https://example.com/search?q=A&B=C&D
파서는 이를 어떻게 해석할까요?
q=A, B=C, D? → 의도와 다른 해석
q=A&B=C&D? → 불분명
국제 문자 지원:
HTTP 초기 표준은 ASCII 문자만 지원했습니다. 한글, 일본어, 아랍어 등을 URL에 포함하려면 인코딩이 필요합니다.
보안:
인코딩을 통해 SQL 인젝션, XSS 같은 보안 공격에 사용되는 특수문자를 무력화할 수 있습니다.
encodeURI vs encodeURIComponent
JavaScript를 사용한다면 두 함수의 차이를 알아야 합니다.
| 함수 | 인코딩하지 않는 문자 | 사용처 |
|---|---|---|
encodeURI() |
A-Z a-z 0-9 - _ . ! ~ * ' ( ) ; / ? : @ & = + $ , # | 전체 URL |
encodeURIComponent() |
A-Z a-z 0-9 - _ . ! ~ * ' ( ) | URL의 파라미터 값 |
// 전체 URL을 인코딩할 때
encodeURI('https://example.com/search?q=한글')
// → 'https://example.com/search?q=%ED%95%9C%EA%B8%80'
// & = ? : / 는 그대로 유지
// 파라미터 값만 인코딩할 때
encodeURIComponent('한글 & 영어')
// → '%ED%95%9C%EA%B8%80%20%26%20%EC%98%81%EC%96%B4'
// & = ? : / 모두 인코딩
자주 사용하는 특수문자 인코딩표
| 문자 | 인코딩 | 의미 |
|---|---|---|
| 공백 | %20 또는 + | 가장 흔한 케이스 |
| & | %26 | 파라미터 구분자 |
| = | %3D | 키-값 구분자 |
| + | %2B | 덧셈, 양수 기호 |
| # | %23 | 앵커(fragment) |
| ? | %3F | 쿼리 시작 |
| / | %2F | 경로 구분자 |
| : | %3A | 스킴, 포트 구분자 |
| @ | %40 | 이메일, 사용자 정보 |
| % | %25 | 퍼센트 기호 자체 |
실제 사용 사례
카카오톡 공유 링크:
카카오 공유 API를 사용할 때 URL 파라미터에 한글이 포함되면 인코딩이 필요합니다.
구글 검색 URL:
https://www.google.com/search?q=%EC%9C%A0%ED%8B%B8%EB%A6%AC%ED%8B%B0
→ 검색어 "유틸리티"를 인코딩한 것
API 요청:
REST API에서 쿼리 파라미터에 특수문자가 포함될 때 인코딩이 필요합니다.
가장 쉬운 방법 — 브라우저에서 바로

- 🔄 인코딩·디코딩 모두 지원
- 📝 쿼리 파라미터 파싱 기능
- 💰 완전 무료, 회원가입 불필요
사용 방법
- toolzip.app/tools/url-encoder 접속
- 인코딩 또는 디코딩 선택
- 텍스트 입력
- 즉시 변환 결과 확인 및 복사
자주 묻는 질문
Q. %20과 +의 차이는 무엇인가요?
둘 다 공백을 나타내지만 쓰이는 곳이 다릅니다. %20은 URL 경로에서 사용하고, +는 주로 HTML 폼 데이터(application/x-www-form-urlencoded)에서 사용합니다.
Q. URL에 한글을 쓰면 왜 자동으로 변환되나요?
브라우저가 자동으로 URL 인코딩을 처리해줍니다. 주소창에 한글을 입력하면 브라우저가 자동으로 퍼센트 인코딩으로 변환합니다.
Q. 인코딩된 URL을 사람이 읽을 수 있게 바꾸려면?
디코딩 기능을 사용하면 %ED%95%9C%EA%B8%80 → 한글로 변환할 수 있습니다.
정리
- ✅ URL 인코딩·디코딩 모두 지원
- ✅ 쿼리 파라미터 파싱
- ✅ 완전 무료, 회원가입 불필요
관련 도구: Base64 변환기 · JSON 포맷터 · 해시 생성기
'ToolZip' 카테고리의 다른 글
| PLY 파일 뷰어 무료 — 설치 없이 온라인에서 바로 열기 (0) | 2026.09.18 |
|---|---|
| OBJ 파일 뷰어 온라인 무료 — 설치 없이 3D 파일 바로 확인 (0) | 2026.09.18 |
| 단위 변환기 무료 — 길이·무게·온도·속도 한번에 변환하는 방법 (0) | 2026.09.17 |
| 월 납입금 계산기 무료 — 대출 이자·원금 상환 방법별 비교 완벽 가이드 (0) | 2026.09.17 |
| BMI 계산기 무료 — 내 체질량지수 계산하고 정상 체중 확인하기 (0) | 2026.09.17 |