[Java] 문자열 인코딩/디코딩 하기

    일괄된 문자 타입으로 작업을 하고 싶지만 데이터가 중구난방으로 들어올 경우, 현재 프로젝트 기준으로 통일을 해서 작업을 해야 한다. 현재는 물론 utf-8로 대다수의 프로젝트가 통일되어 있지만 불과 10년전만하더라도 euc-kr로 된 프로젝트들도 많았고, 반대로 utf-8을 euc-kr로 디코딩해야 하는 상황도 있었다.

     

     

    인코딩(Encode) 하기

    URLEncoder.encode(문자, 변환타입);

    인코딩을 할때는 URLEncoder를 사용하고 첫번째 파라미터는 변환해야 할 문자 두번째 파라미터는 변환해야 할 타입을 지정한다.

     

    디코딩(Decode) 하기

    URLDecoder.decode(문자, 변환타입);

    디코딩을 할때는 URLDecoder를 사용하고 URLEncoder와 마찬가지로 첫번째 파라미터는 변환해야 할 문자 두번째 파라미터는 변환해야 할 타입을 지정한다.

     

    첨부 라이브러리(Import Library)

    import java.net.URLDecoder;
    import java.net.URLEncoder;

     

    예제

    package com.tistory.needneo;
    
    import java.io.UnsupportedEncodingException;
    import java.net.URLDecoder;
    import java.net.URLEncoder;
    
    public class Main {
    
        public static void main(String[] args) throws UnsupportedEncodingException {
            String val = "테스트문자열";
            String encodeVal = "";
            String decodeVal = "";
    
            encodeVal = URLEncoder.encode(val, "utf-8");
    		decodeVal = URLDecoder.decode(encodeVal, "utf-8");
    
            System.out.println("인코딩=>" + encodeVal);
            System.out.println("디코딩=>" + decodeVal);
        }
    }
    
    인코딩=>%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%AC%B8%EC%9E%90%EC%97%B4
    디코딩=>테스트문자열

     

    보통 API단계에서 전송을 할 때 UTF-8을 쓰기 때문에 encode만 위주로 사용하게 된다. 

     

    반응형

    댓글

    Designed by JB FACTORY