ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java - URL 인코딩 디코딩 예제
    Java 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)에 유의해야 합니다.
    반응형

    'Java' 카테고리의 다른 글

    Java - Math.random() 보안 취약점  (1) 2025.06.01
    Java - ArrayList addAll과 add의 차이점  (0) 2024.11.19
    Java - 컬렉션 정렬 시 Null safe  (0) 2024.06.21
    Java - Set example code 사용법  (0) 2024.04.01
    Java - ArrayList 초기화  (0) 2024.03.26

    댓글

Designed by Tistory.