URL Encoding 인코딩 & 디코딩

무료 온라인 URL Encoding 인코딩 & 디코딩 도구. 100% 로컬 처리 — 데이터가 기기를 벗어나지 않습니다.

출력

결과가 여기에 표시됩니다...

입력 인코딩

Usage Guide

URL 인코딩에 대하여

URL 인코딩 ( 퍼센트 인코딩이라고도 하며, RFC 3986에 정의됨)은 URL의 특수 문자를 안전한 문자로 변환하는 인코딩 방법입니다. URL은 ASCII 문자의 일부(영문자, 숫자, 일부 특수 문자)만 허용하며, 그 외의 문자(공백, 한국어, 특수 기호 등)는 URL에서 사용하기 전에 인코딩해야 합니다. URL 인코딩은 각 바이트를 %XX 형식으로 변환하며, XX는 해당 바이트의 16진수 표현입니다. URL 인코딩은 웹 개발의 기초로, URL 매개변수, 폼 제출, HTTP 요청 등 다양한 상황에서 널리 사용됩니다.

웹 개발 필수: URL 인코딩은 웹 개발에서 가장 많이 사용되는 인코딩 방법 중 하나로, URL에서 매개변수를 전달하고, 폼 제출을 처리하며, HTTP 요청을 구성하는 데 사용됩니다. 특수 문자(공백, &, = 등)가 URL에서 안전하게 전송될 수 있도록 합니다. URL 매개변수 처리의 첫 번째 선택으로 추천.

사용 방법

URL 인코딩 및 디코딩은 매우 간단합니다:

1. 인코딩특수 문자가 포함된 텍스트를 입력하고 '인코딩' 버튼을 클릭하면 URL 안전 인코딩 문자열을 얻을 수 있습니다
2. 디코딩URL 인코딩된 문자열을 입력하고 '디코딩' 버튼을 클릭하면 원본 텍스트를 복원할 수 있습니다
3. 결과 복사'복사' 버튼을 클릭하여 인코딩 또는 디코딩 결과를 얻습니다
개인정보 보호: 모든 계산은 브라우저에서 로컬로 수행되며, 데이터는 서버에 업로드되지 않습니다. 완전히 오프라인으로 처리됩니다.

인코딩 규칙

URL 인코딩은 다음 규칙을 따릅니다:

예약 문자영문자(A-Z, a-z), 숫자(0-9), 하이픈(-), 밑줄(_), 점(.), 물결표(~)는 인코딩되지 않습니다
공백공백은 %20 또는 +(쿼리 문자열에서)으로 인코딩됩니다
특수 문자기타 문자(&, =, ?, # 등)는 %XX 형식으로 인코딩됩니다
UTF-8비ASCII 문자(한국어 등)는 먼저 UTF-8 바이트로 변환된 후 %XX로 인코딩됩니다
주의: URL의 다른 부분은 다른 인코딩 규칙을 가집니다. 쿼리 문자열(? 뒤)의 공백은 보통 +로 인코딩되고, 경로 부분의 공백은 %20으로 인코딩됩니다. JavaScript의 encodeURIComponent()를 사용하면 대부분의 경우를 올바르게 처리할 수 있습니다.

일반적인 인코딩 예시

일반적인 문자의 URL 인코딩 예시입니다:

공백%20 또는 +(쿼리 문자열에서)
&%26
=%3D
?%3F
#%23
중국어 '안녕하세요'%E4%BD%A0%E5%A5%BD

적용 시나리오

URL 인코딩은 다양한 웹 개발 시나리오에서 널리 사용됩니다:

URL 매개변수URL 쿼리 문자열에서 매개변수 전달 (예: ?name=홍길동&age=20)
폼 제출HTML 폼은 application/x-www-form-urlencoded 인코딩으로 데이터를 제출합니다
HTTP 요청GET/POST 요청 구성 시 매개변수 인코딩
RESTful APIURL 경로에서 특수 문자가 포함된 리소스 식별자 전달
OAuthOAuth 인증 흐름에서 redirect_uri 등의 매개변수를 인코딩해야 합니다
검색 엔진URL로 전달 시 검색 키워드를 인코딩해야 합니다

FAQ

Q: URL 인코딩과 Base64의 차이점은 무엇인가요?

A: URL 인코딩과 Base64 는 모두 특수 문자를 처리하는 데 사용되지만 목적이 다릅니다. URL 인코딩: 1) 목적: 특수 문자가 URL에서 안전하게 전송될 수 있도록 합니다. 2) 형식: %XX (예: %20). 3) 시나리오: URL 매개변수, 폼 제출. Base64: 1) 목적: 이진 데이터를 텍스트 형식으로 변환합니다. 2) 형식: A-Z, a-z, 0-9, +, /. 3) 시나리오: 이미지 임베딩, JWT, 이메일 첨부 파일. 선택 조언: 1) URL 매개변수: URL 인코딩 사용. 2) 이진 데이터: Base64 사용. 3) 두 가지를 조합할 수도 있습니다 (예: Base64 인코딩 후 URL 인코딩).

Q: 공백은 %20과 + 중 어떤 것으로 인코딩해야 하나요?

A: 공백 인코딩은 URL 위치에 따라 다릅니다. %20: 1) URL 경로 부분에서 사용 (예: /path/hello%20world). 2) 프래그먼트(# 이후)에서 사용. 3) encodeURIComponent()는 공백을 %20으로 인코딩합니다. +: 1) 쿼리 문자열에서 사용 (? 이후, 예: ?q=hello+world). 2) application/x-www-form-urlencoded 형식은 +를 사용합니다. 권장사항: encodeURIComponent()를 사용하여 %20으로 통일적으로 인코딩하세요. 서버는 + 와 %20 모두를 자동으로 처리합니다.

Q: JavaScript에서 URL 인코딩을 어떻게 사용하나요?

A: JavaScript는 목적이 다른 세 가지 URL 인코딩 함수를 제공합니다. encodeURIComponent(): URI 구성요소(매개변수 값)를 인코딩합니다. 권장. 모든 특수 문자를 인코딩합니다 (A-Z, a-z, 0-9, -, _, ., ~ 제외). encodeURI(): 전체 URI를 인코딩하고 URI 구조 문자(:, /, ?, & 등)를 보존합니다. 전체 URL 인코딩에 적합합니다. escape(): 더 이상 사용되지 않음, 권장하지 않음. 예시:
// 매개변수 값 인코딩 (권장) encodeURIComponent('안녕하세요 세계'); // '%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94%20%EC%84%B8%EA%B3%84' // 전체 URL 인코딩 encodeURI('https://example.com/안녕'); // 'https://example.com/%EC%95%88%EB%85%95'
디코딩: decodeURIComponent() 또는 decodeURI()를 사용하세요.

Q: 한국어 문자는 어떻게 URL 인코딩되나요?

A: 비ASCII 문자는 먼저 UTF-8 바이트로 변환된 후 %XX 형식으로 인코딩됩니다. 예시: “안녕” → UTF-8 바이트 → URL 인코딩: %EC%95%88%EB%85%95. JavaScript: encodeURIComponent('안녕')은 UTF-8 변환을 자동으로 처리합니다. 참고: 1) 다른 인코딩(EUC-KR 등)은 다른 결과를 생성합니다. 2) 서버는 UTF-8을 올바르게 디코딩해야 합니다. 3) 현대 웹 애플리케이션은 통일적으로 UTF-8 인코딩을 사용합니다.

Q: URL 인코딩은 데이터 크기를 증가시키나요?

A: 예, URL 인코딩은 데이터 크기를 증가시키며 증가량은 문자 유형에 따라 다릅니다. ASCII 문자: 1) 영문자, 숫자: 인코딩되지 않아 크기 변화 없음. 2) 특수 문자(&, = 등): 3바이트(%XX)로 인코딩되어 200% 증가. 비ASCII 문자: 1) UTF-8 인코딩: 문자당 1-4바이트, 각 바이트가 %XX(3바이트)로. 최적화: 1) 대량의 데이터 전송에는 POST 요청 사용. 2) JSON 형식 사용 고려 (URL 인코딩 불필요).

Q: URL 인코딩과 HTML 엔티티 인코딩의 차이점은 무엇인가요?

A: URL 인코딩과 HTML 엔티티 인코딩은 다른 시나리오에서 사용됩니다. URL 인코딩: 1) 목적: URL에서 특수 문자를 전송합니다. 2) 형식: %XX (예: %20). 3) 시나리오: URL 매개변수, 폼 제출. HTML 엔티티 인코딩: 1) 목적: HTML에서 특수 문자를 표시합니다. 2) 형식: &name; (예: &lt;) 또는 &#number; (예: &#60;). 3) 시나리오: HTML 콘텐츠, 속성 값. 예시: < → URL 인코딩: %3C, HTML 엔티티: &lt; 또는 &#60;.

Use Cases

권장: URL 쿼리 매개변수

URL 쿼리 문자열에서 매개변수를 전달하는 것은 URL 인코딩의 가장 일반적인 응용입니다. 쿼리 문자열은 ?로 시작하고 매개변수는 &로 구분되며, 매개변수 이름과 값은 =로 연결됩니다. 매개변수 값에 특수 문자(공백, &, = 등)가 포함되어 있으면 URL 인코딩해야 합니다. JavaScript의 encodeURIComponent()를 사용하면 매개변수 값을 올바르게 인코딩할 수 있습니다.

Recommended Configuration:
  • ✅ encodeURIComponent()를 사용하여 매개변수 값 인코딩
  • ✅ URLSearchParams API를 사용하여 쿼리 문자열 구성
  • ✅ 서버에서 해당 디코딩 함수 사용
  • ❌ URL 매개변수를 수동으로 연결하지 않기
  • 💡 대량의 데이터에는 POST 요청 사용 고려
권장: HTML 폼 제출

HTML 폼은 application/x-www-form-urlencoded 인코딩으로 데이터를 제출하며, 이는 URL 인코딩의 변형입니다. 폼 데이터는 key=value&key=value 형식으로 제출되고, 공백은 +로, 기타 특수 문자는 %XX로 인코딩됩니다. 현대 브라우저는 폼 인코딩을 자동으로 처리하므로 개발자가 보통 수동으로 인코딩할 필요가 없습니다. 그러나 JavaScript(Fetch API 등)로 폼 데이터를 구성할 때는 수동 인코딩이 필요합니다.

Recommended Configuration:
  • ✅ FormData API를 사용하여 인코딩 자동 처리
  • ✅ URLSearchParams를 사용하여 폼 데이터 구성
  • ✅ 서버에서 폼 데이터를 올바르게 디코딩
  • 💡 파일 업로드에는 multipart/form-data 사용
권장: RESTful API 경로 매개변수

RESTful API에서 리소스 식별자에 특수 문자(공백, 슬래시 등)가 포함될 수 있어 URL 인코딩이 필요합니다. 예를 들어, /users/홍 길동/users/홍%20길동으로 인코딩해야 합니다. encodeURIComponent()를 사용하여 경로 매개변수를 인코딩하면 API가 리소스 식별자를 올바르게 파싱할 수 있습니다.

Recommended Configuration:
  • ✅ encodeURIComponent()를 사용하여 경로 매개변수 인코딩
  • ✅ 서버에서 경로 매개변수를 올바르게 디코딩
  • ✅ 리소스 식별자로 이름 대신 ID 사용 고려
  • 💡 URL 템플릿 라이브러리(path-to-regexp 등) 사용
권장: OAuth 인증

OAuth 인증 흐름에서 redirect_uri, state 등의 매개변수는 URL 인코딩이 필요합니다. 예를 들어, redirect_uri는 보통 쿼리 매개변수가 포함된 완전한 URL로, 매개변수 값으로 전달하기 전에 전체를 인코딩해야 합니다. encodeURIComponent()를 사용하여 이 매개변수를 인코딩하면 OAuth 서버가 올바르게 파싱할 수 있습니다.

Recommended Configuration:
  • ✅ encodeURIComponent()를 사용하여 redirect_uri 인코딩
  • ✅ encodeURIComponent()를 사용하여 state 매개변수 인코딩
  • ✅ 디코딩된 redirect_uri가 유효한지 확인
  • 💡 자동 처리를 위해 OAuth 라이브러리(Passport.js 등) 사용
권장: 검색 엔진 쿼리

URL로 전달될 때 검색 키워드는 URL 인코딩이 필요합니다. 예를 들어, Google에서 “안녕 세계”를 검색하는 URL은 https://www.google.com/search?q=안녕+세계입니다. 검색 엔진은 URL 인코딩을 자동으로 처리하므로 사용자가 보통 수동으로 인코딩할 필요가 없습니다. 그러나 검색 URL(자동 리디렉션 등)을 구성할 때는 encodeURIComponent()를 사용하여 검색 키워드를 인코딩해야 합니다.

Recommended Configuration:
  • ✅ encodeURIComponent()를 사용하여 검색 키워드 인코딩
  • ✅ 여러 키워드 처리(공백 또는 +로 구분)
  • ✅ 검색 엔진 API 사용 고려
  • 💡 URLSearchParams를 사용하여 검색 URL 구성
권장: URL 단축 서비스

URL 단축 서비스(bit.ly 등)는 긴 URL을 저장하고 전송하기 전에 인코딩해야 합니다. 긴 URL에는 특수 문자(쿼리 매개변수 등)가 포함될 수 있어 URL 인코딩이 필요합니다. encodeURIComponent()를 사용하여 긴 URL을 인코딩하면 단축 서비스가 올바르게 파싱하고 복원할 수 있습니다. 단축 서비스는 보통 인코딩된 URL을 다시 인코딩하므로 디코딩 시 여러 번 처리가 필요할 수 있습니다.

Recommended Configuration:
  • ✅ encodeURIComponent()를 사용하여 긴 URL 인코딩
  • ✅ 디코딩된 URL이 유효한지 확인
  • ✅ 다중 인코딩 경우 처리
  • 💡 단축 서비스 API 사용

모범 사례 권장사항

  • URL 매개변수 값 인코딩에는 encodeURIComponent()를, 전체 URL 인코딩에는 encodeURI()를 사용하세요.
  • 쿼리 문자열의 공백은 +, 경로에서는 %20으로 인코딩됩니다. encodeURIComponent()를 사용하여 통일적으로 %20으로 인코딩하세요.
  • 비ASCII 문자는 UTF-8 인코딩을 사용합니다. 서버가 올바르게 디코딩할 수 있도록 하세요.
  • URL 매개변수를 수동으로 연결하지 마세요. 자동 인코딩 처리를 위해 URLSearchParams API 또는 FormData API를 사용하세요.
  • URL 인코딩은 데이터 크기를 증가시킵니다. 대량의 데이터에는 POST 요청 또는 JSON 형식을 사용하세요.
  • URL 인젝션 공격을 방지하기 위해 디코딩된 URL의 유효성을 확인하세요.

토론 및 피드백

0개의 댓글