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)에 유의해야 합니다.
반응형