URL Encoding 인코딩 & 디코딩
무료 온라인 URL Encoding 인코딩 & 디코딩 도구. 100% 로컬 처리 — 데이터가 기기를 벗어나지 않습니다.
결과가 여기에 표시됩니다...
입력 → 인코딩
Usage Guide
URL 인코딩에 대하여
URL 인코딩 ( 퍼센트 인코딩이라고도 하며, RFC 3986에 정의됨)은 URL의 특수 문자를 안전한 문자로 변환하는 인코딩 방법입니다. URL은 ASCII 문자의 일부(영문자, 숫자, 일부 특수 문자)만 허용하며, 그 외의 문자(공백, 한국어, 특수 기호 등)는 URL에서 사용하기 전에 인코딩해야 합니다. URL 인코딩은 각 바이트를 %XX 형식으로 변환하며, XX는 해당 바이트의 16진수 표현입니다. URL 인코딩은 웹 개발의 기초로, URL 매개변수, 폼 제출, HTTP 요청 등 다양한 상황에서 널리 사용됩니다.
사용 방법
URL 인코딩 및 디코딩은 매우 간단합니다:
인코딩 규칙
URL 인코딩은 다음 규칙을 따릅니다:
encodeURIComponent()를 사용하면 대부분의 경우를 올바르게 처리할 수 있습니다.일반적인 인코딩 예시
일반적인 문자의 URL 인코딩 예시입니다:
적용 시나리오
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; (예: <) 또는 &#number; (예: <). 3) 시나리오: HTML 콘텐츠, 속성 값. 예시: < → URL 인코딩: %3C, HTML 엔티티: < 또는 <.
Use Cases
권장: URL 쿼리 매개변수
URL 쿼리 문자열에서 매개변수를 전달하는 것은 URL 인코딩의 가장 일반적인 응용입니다. 쿼리 문자열은 ?로 시작하고 매개변수는 &로 구분되며, 매개변수 이름과 값은 =로 연결됩니다. 매개변수 값에 특수 문자(공백, &, = 등)가 포함되어 있으면 URL 인코딩해야 합니다. JavaScript의 encodeURIComponent()를 사용하면 매개변수 값을 올바르게 인코딩할 수 있습니다.
- ✅ encodeURIComponent()를 사용하여 매개변수 값 인코딩
- ✅ URLSearchParams API를 사용하여 쿼리 문자열 구성
- ✅ 서버에서 해당 디코딩 함수 사용
- ❌ URL 매개변수를 수동으로 연결하지 않기
- 💡 대량의 데이터에는 POST 요청 사용 고려
권장: HTML 폼 제출
HTML 폼은 application/x-www-form-urlencoded 인코딩으로 데이터를 제출하며, 이는 URL 인코딩의 변형입니다. 폼 데이터는 key=value&key=value 형식으로 제출되고, 공백은 +로, 기타 특수 문자는 %XX로 인코딩됩니다. 현대 브라우저는 폼 인코딩을 자동으로 처리하므로 개발자가 보통 수동으로 인코딩할 필요가 없습니다. 그러나 JavaScript(Fetch API 등)로 폼 데이터를 구성할 때는 수동 인코딩이 필요합니다.
- ✅ FormData API를 사용하여 인코딩 자동 처리
- ✅ URLSearchParams를 사용하여 폼 데이터 구성
- ✅ 서버에서 폼 데이터를 올바르게 디코딩
- 💡 파일 업로드에는 multipart/form-data 사용
권장: RESTful API 경로 매개변수
RESTful API에서 리소스 식별자에 특수 문자(공백, 슬래시 등)가 포함될 수 있어 URL 인코딩이 필요합니다. 예를 들어, /users/홍 길동은 /users/홍%20길동으로 인코딩해야 합니다. encodeURIComponent()를 사용하여 경로 매개변수를 인코딩하면 API가 리소스 식별자를 올바르게 파싱할 수 있습니다.
- ✅ encodeURIComponent()를 사용하여 경로 매개변수 인코딩
- ✅ 서버에서 경로 매개변수를 올바르게 디코딩
- ✅ 리소스 식별자로 이름 대신 ID 사용 고려
- 💡 URL 템플릿 라이브러리(path-to-regexp 등) 사용
권장: OAuth 인증
OAuth 인증 흐름에서 redirect_uri, state 등의 매개변수는 URL 인코딩이 필요합니다. 예를 들어, redirect_uri는 보통 쿼리 매개변수가 포함된 완전한 URL로, 매개변수 값으로 전달하기 전에 전체를 인코딩해야 합니다. encodeURIComponent()를 사용하여 이 매개변수를 인코딩하면 OAuth 서버가 올바르게 파싱할 수 있습니다.
- ✅ encodeURIComponent()를 사용하여 redirect_uri 인코딩
- ✅ encodeURIComponent()를 사용하여 state 매개변수 인코딩
- ✅ 디코딩된 redirect_uri가 유효한지 확인
- 💡 자동 처리를 위해 OAuth 라이브러리(Passport.js 등) 사용
권장: 검색 엔진 쿼리
URL로 전달될 때 검색 키워드는 URL 인코딩이 필요합니다. 예를 들어, Google에서 “안녕 세계”를 검색하는 URL은 https://www.google.com/search?q=안녕+세계입니다. 검색 엔진은 URL 인코딩을 자동으로 처리하므로 사용자가 보통 수동으로 인코딩할 필요가 없습니다. 그러나 검색 URL(자동 리디렉션 등)을 구성할 때는 encodeURIComponent()를 사용하여 검색 키워드를 인코딩해야 합니다.
- ✅ encodeURIComponent()를 사용하여 검색 키워드 인코딩
- ✅ 여러 키워드 처리(공백 또는 +로 구분)
- ✅ 검색 엔진 API 사용 고려
- 💡 URLSearchParams를 사용하여 검색 URL 구성
권장: URL 단축 서비스
URL 단축 서비스(bit.ly 등)는 긴 URL을 저장하고 전송하기 전에 인코딩해야 합니다. 긴 URL에는 특수 문자(쿼리 매개변수 등)가 포함될 수 있어 URL 인코딩이 필요합니다. encodeURIComponent()를 사용하여 긴 URL을 인코딩하면 단축 서비스가 올바르게 파싱하고 복원할 수 있습니다. 단축 서비스는 보통 인코딩된 URL을 다시 인코딩하므로 디코딩 시 여러 번 처리가 필요할 수 있습니다.
- ✅ encodeURIComponent()를 사용하여 긴 URL 인코딩
- ✅ 디코딩된 URL이 유효한지 확인
- ✅ 다중 인코딩 경우 처리
- 💡 단축 서비스 API 사용
모범 사례 권장사항
- URL 매개변수 값 인코딩에는 encodeURIComponent()를, 전체 URL 인코딩에는 encodeURI()를 사용하세요.
- 쿼리 문자열의 공백은 +, 경로에서는 %20으로 인코딩됩니다. encodeURIComponent()를 사용하여 통일적으로 %20으로 인코딩하세요.
- 비ASCII 문자는 UTF-8 인코딩을 사용합니다. 서버가 올바르게 디코딩할 수 있도록 하세요.
- URL 매개변수를 수동으로 연결하지 마세요. 자동 인코딩 처리를 위해 URLSearchParams API 또는 FormData API를 사용하세요.
- URL 인코딩은 데이터 크기를 증가시킵니다. 대량의 데이터에는 POST 요청 또는 JSON 형식을 사용하세요.
- URL 인젝션 공격을 방지하기 위해 디코딩된 URL의 유효성을 확인하세요.