[Java/자바] 한글 문자열 URL 인코딩(encode)/디코딩(decode) 하기

 

URL 인코딩/디코딩
  • 특수문자, 예약문자, 한글은 URL에 사용할 수 없음
  • 아래 URL에 홍길동은 한글이기 때문에 깨질 수 있어, 홍길동의 값을 인코딩해준다
http://www.test.com/user?name=홍길동

 

URL인코딩
  • String s : 인코딩할 url
  • String enc : 인코딩 될 charset (ex. "UTF-8")
String encodeStr = URLEncoder.encode(String s, String enc)

 

URL디코딩
  • String s : 디코딩할 url
  • String enc : 디코딩될 charset (ex. "UTF-8")
String decodeStr = URLDecoder.decode(String s, String enc)

 

예시
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

try{

    String encodeName = URLEncoder.encode("홍길동", "UTF-8")
    // encodeName = "%ED%99%8D%EA%B8%B8%EB%8F%99"

    String decodeName = URLDeoder.decode("%ED%99%8D%EA%B8%B8%EB%8F%99", "UTF-8")
    // decodeName = "홍길동"
    
}catch(UnsupportedEncodingException e){
	e.printStackTrace();
}

 

참고
URLEncoder.encode(String s)
  • JDK 1.3까지는 잘 쓰이던 URL Encoder(String s)이나, JDK 1.4 이후 비추천(deprecated)
  • JDK 1.4 이후 버전은 문자 인코딩 인수가 첨가된 encode(String s, String enc) 추천
  • W3C에서 호환성을 위해 UTF-8 추천
  • URL 인코딩/디코딩 사이트

URL 인코딩/디코딩 사이트

https://www.convertstring.com/ko/EncodeDecode/UrlEncode