Programming/Java

Java 18 이상에서 한글 문제

가우리언 2024. 9. 19.
728x90
반응형

 

 

 

 

참고 :

 

Java 18 이상으로 컴파일해서 실행하면, 콘솔에서 한글이 깨지는 문제점이 발생한다.

 

Java 18 이 되면서 Java API 의 기본 인코딩이 UTF-16에서 UTF-8 로 바뀌었다.

그런데, Console I/O 관련 API는 제외되었다고 한다.


이 것이 원인인가??? 이상하다.

윈도우 커맨드창에서 chcp 65001 을 입력하면 UTF-8 로 바뀐다던데, 이렇게 해도 한글이 깨진다. TT

 

이에 대한 해결책을 찾아보았으나, 전혀 발견하지 못하였다.

한글 깨짐 문제가 해결될 때까지는 당분간 Java 17을 사용해야겠다.

 


 

일단, 해결책을 찾았다. 다음과 같이 작성해주어야 한다.

package org.example;

import java.io.PrintStream;
import java.io.UnsupportedEncodingException;

public class App {
    public String getGreeting() {
        return "안녕, 세상아!!";
    }

    public static void main(String[] args) throws UnsupportedEncodingException {
        System.setOut(new PrintStream(System.out, true, "UTF-8")); // <--- 여기가 중요한 부분!
        System.out.println(new App().getGreeting());
    }
}

 

위에서 중요한 부분은 바로 바로... 아래 처럼 Stream 의 인코딩을 명시적으로 UTF-8 로 설정해 주어야 한다는 것이다.

System.setOut(new PrintStream(System.out, true, "UTF-8"));

그리고, 윈도우 터미널창에서 chcp 65001 을 입력해서 UTF-8 모드로 변경한 후에 gradle run 을 실행하면 한글이 제대로 출력될 것이다.

 

 

728x90
반응형

댓글