URL 인코더
URL의 특수 문자 인코딩
일반 텍스트 / URL
인코딩됨
URL 인코딩이란?
URL 인코딩(퍼센트 인코딩이라고도 함)은 Uniform Resource Identifier(URI)에 정보를 인코딩하여 최종 문자열에 RFC 3986이 허용하는 문자만 나타나도록 하는 메커니즘입니다. 비예약 문자(A–Z, a–z, 0–9, -, _, ., ~)가 아닌 모든 문자는 퍼센트 기호와 해당 문자의 UTF-8 바이트 값을 나타내는 두 자리 16진수로 대체됩니다. 예를 들어 공백은 %20이 되고 &는 %26이 됩니다.
퍼센트 인코딩이 필요한 이유는 URL이 제한된 ASCII 문자 집합만 포함할 수 있기 때문입니다. URL에 이 집합 외의 문자(공백, 유니코드 문자, 구조적 구분자가 아닌 리터럴 값으로 사용되는 &, =, / 등)가 포함되면 URL 파서가 잘못 해석하지 않도록 반드시 인코딩해야 합니다. 이는 쿼리 문자열 값에서 특히 중요한데, 인코딩되지 않은 &나 =는 파라미터 구조를 망가뜨릴 수 있습니다.
이 도구를 사용하는 이유
코드를 작성하지 않고도 두 모드에서 텍스트가 어떻게 인코딩되는지 실시간 나란히 비교로 즉시 확인할 수 있습니다.
이 온라인 URL 인코더 사용 방법
계정 없음, 설치 없음. 입력 필드에 텍스트를 붙여넣거나 입력하면 퍼센트 인코딩된 결과가 즉시 나타납니다. 모든 작업이 브라우저에서 실행됩니다 — 데이터가 기기를 벗어나지 않습니다.
- 1텍스트 또는 URL 붙여넣기쿼리 파라미터 값, 전체 URL, 경로 세그먼트, JSON 페이로드 등 임의의 문자열을 입력하세요. 인코더는 RFC 3986에 따라 문자 단위로 처리합니다.
- 2인코딩 모드 선택encodeURIComponent를 선택하면 개별 파라미터 값을 인코딩합니다(비예약 문자를 제외한 모든 문자 인코딩). encodeURI를 선택하면 ://?#&= 같은 구조 문자를 유지하면서 전체 URL을 인코딩합니다.
- 3인코딩된 출력 복사퍼센트 인코딩된 문자열이 즉시 표시됩니다. 복사를 클릭하여 결과를 가져와 API 호출, 폼 액션 또는 설정 파일에 직접 붙여넣으세요.
- 4필요 시 다시 디코딩실수했거나 결과를 확인하고 싶으신가요? URL 디코더 도구로 클릭 한 번에 전환하여 인코딩을 되돌리세요.
어떤 문자가 인코딩되나요?
RFC 3986은 URL 문자를 두 가지 범주로 나눕니다: 비예약 문자(절대 인코딩 안 함)와 예약 문자(특별한 의미를 가지며 컨텍스트에 따라 인코딩되거나 유지됨). 아래 표는 두 JavaScript 함수가 주요 문자를 어떻게 처리하는지 보여줍니다:
| 문자 | URL에서의 의미 | encodeURIComponent | encodeURI |
|---|---|---|---|
| Space | word separator | %20 | %20 |
| + | plus sign | %2B | %2B |
| / | path separator | %2F | / (kept) |
| ? | query start | %3F | ? (kept) |
| # | fragment | %23 | # (kept) |
| & | param separator | %26 | & (kept) |
| = | param value | %3D | = (kept) |
| @ | auth separator | %40 | @ (kept) |
| : | scheme / port | %3A | : (kept) |
| % | percent literal | %25 | %25 |
| ~ | unreserved | ~ (kept) | ~ (kept) |
| -_.~ | unreserved set | kept as-is | kept as-is |
encodeURIComponent vs encodeURI
JavaScript는 동작이 크게 다른 두 가지 인코딩 함수를 제공합니다. 잘못된 함수를 선택하는 것은 URL 처리에서 가장 흔한 버그 중 하나입니다:
주요 사용 사례
코드 예시
주요 언어와 환경에서 문자열을 URL 인코딩하는 방법:
// Encode a query parameter value (most common case)
encodeURIComponent('hello world & more') // → "hello%20world%20%26%20more"
// Encode a complete URL (preserves ://?#& structure)
encodeURI('https://example.com/path?q=hello world') // → "https://example.com/path?q=hello%20world"
// Build a query string safely
const params = new URLSearchParams({ q: 'hello world', lang: 'en' })
const url = `https://example.com/search?${params}` // uses + for spacesfrom urllib.parse import quote, urlencode, quote_plus
# Encode a path segment or query value
quote('hello world & more') # → 'hello%20world%20%26%20more'
# Encode for application/x-www-form-urlencoded (space → +)
quote_plus('hello world') # → 'hello+world'
# Build a query string
urlencode({'q': 'hello world', 'lang': 'en'}) # → 'q=hello+world&lang=en'const url = new URL('https://example.com/search')
url.searchParams.set('q', 'hello world & more')
url.searchParams.set('lang', 'en')
console.log(url.toString())
// → https://example.com/search?q=hello+world+%26+more&lang=en# curl automatically percent-encodes --data fields
curl -G "https://example.com/search" --data-urlencode "q=hello world & more"
# Manual encoding with Python one-liner
python3 -c "from urllib.parse import quote; print(quote('hello world'))"URL 인코더 vs. 대안
여러 도구가 텍스트를 퍼센트 인코딩할 수 있지만, 제어, 개인정보 보호, 컨텍스트 면에서 차이가 있습니다.