Language/Java

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

The Neo 2020. 11. 17. 15:58

일괄된 문자 타입으로 작업을 하고 싶지만 데이터가 중구난방으로 들어올 경우, 현재 프로젝트 기준으로 통일을 해서 작업을 해야 한다. 현재는 물론 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만 위주로 사용하게 된다. 

 

반응형