본문으로 건너뛰기

🔐 URL 인코더/디코더

URL에서 안전하게 사용할 수 있도록 특수문자를 인코딩하거나, 인코딩된 URL을 원본으로 디코딩하는 도구입니다.

📝 Input Text

✨ Result

💡 Examples

Original:
https://example.com/search?query=헬로 월드&lang=ko
Encoded:
https%3A%2F%2Fexample.com%2Fsearch%3Fquery%3D%ED%97%AC%EB%A1%9C%20%EC%9B%94%EB%93%9C%26lang%3Dko

URL encoding converts special characters into percent-encoded format for safe transmission in URLs. Use Encode to convert special characters, and Decode to restore the original text.

주요 기능

1. URL 인코딩 (Encode)

특수문자, 한글, 공백 등을 퍼센트 인코딩 형식(%XX)으로 변환합니다.

예시:

원본: https://example.com/search?query=헬로 월드&lang=ko
인코딩: https%3A%2F%2Fexample.com%2Fsearch%3Fquery%3D%ED%97%AC%EB%A1%9C%20%EC%9B%94%EB%93%9C%26lang%3Dko

2. URL 디코딩 (Decode)

퍼센트 인코딩된 URL을 읽을 수 있는 원본 텍스트로 변환합니다.

예시:

인코딩: %ED%97%AC%EB%A1%9C%20%EC%9B%94%EB%93%9C
디코딩: 헬로 월드

3. 편리한 기능

  • 텍스트 교환: 입력과 결과를 빠르게 바꿀 수 있습니다
  • 복사: 결과를 클립보드에 복사합니다
  • 초기화: 모든 입력을 한 번에 지웁니다

URL 인코딩이 필요한 이유

안전한 URL 전송

URL에는 특별한 의미를 가진 문자들이 있습니다:

  • / : 경로 구분자
  • ? : 쿼리 시작
  • & : 파라미터 구분자
  • = : 키-값 구분자
  • # : 프래그먼트

이런 문자들을 데이터로 전송하려면 인코딩이 필요합니다.

한글 및 다국어

원본: https://example.com/검색?keyword=안녕하세요
인코딩: https://example.com/%EA%B2%80%EC%83%89?keyword=%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94

한글이나 특수문자는 URL에서 직접 사용할 수 없어 인코딩이 필수입니다.

사용 예시

웹 개발

// JavaScript에서 URL 생성
const searchQuery = "안녕하세요";
const encodedQuery = encodeURIComponent(searchQuery);
const url = `https://api.example.com/search?q=${encodedQuery}`;
// 결과: https://api.example.com/search?q=%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94

API 호출

# 원본 URL (작동하지 않음)
GET https://api.example.com/users?name=홍길동&age=30

# 인코딩된 URL (정상 작동)
GET https://api.example.com/users?name=%ED%99%8D%EA%B8%B8%EB%8F%99&age=30

쿼리 파라미터

# 특수문자가 포함된 검색어
원본: 검색어=C++ & Java
인코딩: 검색어=C%2B%2B%20%26%20Java

인코딩되는 문자

항상 인코딩되는 문자

  • 공백: %20
  • 한글/한자: 각 문자가 여러 바이트로 인코딩
  • 특수문자: !, @, #, $, %, ^, &, *, (, ), =, +, [, ], {, }

예시

!   → %21
@ → %40
# → %23
$ → %24
% → %25
& → %26
= → %3D
+ → %2B
공백 → %20

활용 사례

🌐 웹 개발

  • 검색 기능: 사용자 입력을 URL 쿼리로 변환
  • API 호출: GET 요청 파라미터 인코딩
  • 파일 이름: 특수문자가 포함된 파일명 처리

📧 이메일 링크

<!-- 제목과 본문이 있는 mailto 링크 -->
<a href="mailto:test@example.com?subject=안녕하세요&body=문의사항입니다">
<!-- 인코딩 후 -->
<a href="mailto:test@example.com?subject=%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94&body=%EB%AC%B8%EC%9D%98%EC%82%AC%ED%95%AD%EC%9E%85%EB%8B%88%EB%8B%A4">

🔗 소셜 미디어 공유

// Facebook 공유 URL
https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fexample.com&quote=%EC%A2%8B%EC%9D%80%20%EA%B8%B0%EC%82%AC

// Twitter 공유 URL
https://twitter.com/intent/tweet?text=%EB%A9%8B%EC%A7%84%20%EB%89%B4%EC%8A%A4&url=https%3A%2F%2Fexample.com

📊 데이터 분석

  • 로그 분석: 웹 서버 로그의 인코딩된 URL 해석
  • 트래킹 URL: Google Analytics 등의 파라미터 해석

언제 인코딩하나요?

  • 쿼리 파라미터 값: ?search=인코딩필요
  • 한글/특수문자: name=홍길동
  • 공백: query=hello world
  • 도메인: https:// (이미 안전한 문자)
  • 경로 구분자: /api/users (의도적인 구분자)

전체 URL vs 파라미터만

// ❌ 잘못된 방법: 전체 URL 인코딩
const wrong = encodeURIComponent("https://example.com/search?q=안녕");
// 결과: https%3A%2F%2Fexample.com%2Fsearch%3Fq%3D%EC%95%88%EB%85%95

// ✅ 올바른 방법: 파라미터 값만 인코딩
const query = encodeURIComponent("안녕");
const correct = `https://example.com/search?q=${query}`;
// 결과: https://example.com/search?q=%EC%95%88%EB%85%95

이중 인코딩 주의

원본: 안녕하세요
1차 인코딩: %EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94
2차 인코딩: %25EC%2595%2588%25EB%2585%2595%25ED%2595%2598%25EC%2584%25B8%25EC%259A%2594

// 같은 텍스트를 두 번 인코딩하면 안 됩니다!

프로그래밍 언어별 사용법

JavaScript

// 인코딩
const encoded = encodeURIComponent("안녕하세요");
// 디코딩
const decoded = decodeURIComponent(encoded);

Python

from urllib.parse import quote, unquote

# 인코딩
encoded = quote("안녕하세요")
# 디코딩
decoded = unquote(encoded)

Java

import java.net.URLEncoder;
import java.net.URLDecoder;

// 인코딩
String encoded = URLEncoder.encode("안녕하세요", "UTF-8");
// 디코딩
String decoded = URLDecoder.decode(encoded, "UTF-8");

PHP

// 인코딩
$encoded = urlencode("안녕하세요");
// 디코딩
$decoded = urldecode($encoded);

관련 도구

자주 묻는 질문

Q: URL의 어느 부분을 인코딩해야 하나요? A: 쿼리 파라미터의 부분만 인코딩하세요. 프로토콜(https://), 도메인, 경로 구분자(/)는 인코딩하지 않습니다.

Q: 공백이 %20+ 두 가지로 표시되는데, 차이가 뭔가요? A: %20은 URL 전체에서 사용 가능하고, +는 쿼리 파라미터에서만 공백을 나타냅니다. 일반적으로 %20을 사용하는 것이 안전합니다.

Q: 디코딩 오류가 발생합니다. A: 입력된 텍스트가 올바른 URL 인코딩 형식이 아니거나, 이미 디코딩된 텍스트일 수 있습니다. 원본 인코딩된 URL을 다시 확인해보세요.

Q: 이미 인코딩된 URL을 다시 인코딩하면 어떻게 되나요? A: 이중 인코딩이 발생하여 원하지 않는 결과가 나옵니다. 예를 들어 %20%2520으로 변환됩니다. 한 번만 인코딩하세요.