본문으로 건너뛰기

🔐 URL 인코더/디코더

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

📝 입력 텍스트

✨ 결과

💡 예시

원본:
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

URL 인코딩은 특수문자를 퍼센트 인코딩 형식으로 변환하여 URL에서 안전하게 전송할 수 있도록 합니다. 인코딩으로 특수문자를 변환하고, 디코딩으로 원본 텍스트를 복원하세요.

주요 기능

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으로 변환됩니다. 한 번만 인코딩하세요.