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();
}
}
}
위 코드는 문자열 내 특수문자를 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();
}
}
}
위 예제는 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를 함께 사용하면 됩니다.