Java

Java - URL 인코딩 디코딩 예제

codeManager 2025. 5. 16. 17:53
반응형

 

웹 개발을 하다 보면 종종 URL에 한글이나 특수 문자를 포함해야 할 때가 있습니다.

이 때 사용하는 것이 바로 URL 인코딩(encoding)입니다.

Java에서는 java.net.URLEncoder와 java.net.URLDecoder 클래스를 사용하면 URL 인코딩과 디코딩을 간단하게 처리할 수 있습니다.

URL 인코딩이란?

URL에 포함할 수 없는 문자(예: 한글, 공백, 특수문자)를 %와 숫자 조합으로 바꾸는 작업입니다.

예시:

  • 공백 → %20 (또는 +)
  • 한글 → %ED%95%9C%EA%B8%80
  • : → %3A

 

기본 사용법

import java.net.URLEncoder;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;

public class UrlEncodingExample {
    public static void main(String[] args) throws Exception {
        String original = "한글 테스트 / 공백 : 특수문자 !@#";

        // 인코딩
        String encoded = URLEncoder.encode(original, StandardCharsets.UTF_8.toString());
        System.out.println("Encoded: " + encoded);

        // 디코딩
        String decoded = URLDecoder.decode(encoded, StandardCharsets.UTF_8.toString());
        System.out.println("Decoded: " + decoded);
    }
}

 

출력 결과

 

Encoded: %ED%95%9C%EA%B8%80+%ED%85%8C%EC%8A%A4%ED%8A%B8+%2F+%EA%B3%B5%EB%B0%B1+%3A+%ED%8A%B9%EC%88%98%EB%AC%B8%EC%9E%90+%21%40%23
Decoded: 한글 테스트 / 공백 : 특수문자 !@#

 

 

인코딩 시 주의사항

  • URLEncoder.encode()는 HTML form 전송 방식에 맞춰 공백을 +로 인코딩합니다.
  • 브라우저나 HTTP 라이브러리에서는 공백을 %20으로 처리하는 것을 더 선호합니다.
  • 필요한 경우 .replace("+", "%20")으로 보정할 수 있습니다.
 
String encodedForUrl = URLEncoder.encode(original, "UTF-8").replace("+", "%20");

 

 

URLDecoder는 언제 사용할까?

클라이언트에서 전송한 파라미터가 % 형태로 전달되었을 때 원래 문자열로 복원할 때 사용합니다.

String encodedValue = "%ED%95%9C%EA%B8%80";
String decodedValue = URLDecoder.decode(encodedValue, "UTF-8");
System.out.println(decodedValue); // 한글

 

 

결론

  • Java에서는 URLEncoder와 URLDecoder로 간편하게 URL 인코딩을 처리할 수 있습니다.
  • 웹 개발에서 쿼리 파라미터나 URL 문자열을 다룰 때 필수적인 기능입니다.
  • 공백 처리(+ vs %20)에 유의해야 합니다.
반응형