Study/java

[Java] URLEncoder, URLDecoder 사용 방법 정리

 

URLEncoder, URLDecoder 사용 방법과 encode 메소드 사용 시 deprecated가 발생했을 때 처리 방법에 대해 정리해보았습니다.

 

URLEncoder 사용 방법

URLEncoder 클래스는 URL 내에 특수 문자를 포함할 때 발생하는 문제를 해결하기 위해 사용하는 Java의 유틸리티 클래스입니다.

URL은 특정 문자 세트를 따르기 때문에 한글이나 특수문자가 포함될 경우 제대로 전송되지 않거나, 서버에서 오류가 발생할 수 있습니다.

이를 방지하기 위해 특수문자를 안전한 URL 형식으로 인코딩해주는 역할을 합니다.

 

예제

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

public class URLExample {
    public static void main(String[] args) {
        try {
            String encodedURL = URLEncoder.encode("특수 문자 예: & % # !", StandardCharsets.UTF_8.toString());
            System.out.println("인코딩된 URL: " + encodedURL);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

URLEncoder로 URL 인코딩 결과
URLEncoder로 URL 인코딩 결과

위 코드는 문자열 내 특수문자를 UTF-8 형식으로 인코딩하여 안전한 URL을 생성합니다.

 

 

 

 

 

 

 

URLDecoder 사용 방법

URLDecoder 클래스는 인코딩된 URL을 다시 읽을 수 있는 문자열로 복원하기 위한 Java 클래스입니다.

URL 내의 특수문자가 인코딩되어 전달된 경우, 이를 디코딩하여 원래의 형태로 변환할 수 있습니다.

 

예제

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

public class URLExample {
    public static void main(String[] args) {
        try {
            String encodedURL = "%ED%8A%B9%EC%88%98+%EB%AC%B8%EC%9E%90+%EC%98%88%3A+%26+%25+%23+%21";
            String decodedURL = URLDecoder.decode(encodedURL, StandardCharsets.UTF_8.toString());
            System.out.println("디코딩된 URL: " + decodedURL);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

URLDecoder로 URL 디코딩 결과

위 예제는 UTF-8로 인코딩된 URL을 URLDecoder.decode를 통해 특수문자를 원래 상태로 복원하는 방식입니다.

 

urlencoder.encode deprecated 해결 방법

Java 최신 버전에서는 일부 URLEncoder.encode 메서드가 Deprecated 처리되어 있습니다.

다음과 같이 사용하면 됩니다.

try {
    // deprecated
    String deprecatedEncodedURL = URLEncoder.encode("특수 문자 예: & % # !");
    System.out.println("인코딩된 URL(deprecated): " + deprecatedEncodedURL);

    // not deprecated
    String encodedURL = URLEncoder.encode("특수 문자 예: & % # !", StandardCharsets.UTF_8.toString());
    System.out.println("인코딩된 URL: " + encodedURL);
} catch (Exception e) {
    e.printStackTrace();
}

 

encode 메소드 사용 시 Charsets를 함께 사용하면 됩니다.