728x90
반응형
참고 :
- https://openjdk.org/jeps/400
- https://stackoverflow.com/questions/71685543/java-jdk-18-in-intellij-prints-question-mark-when-i-tried-to-print-unicode-l
- https://docs.gradle.org/current/userguide/build_environment.html
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
반응형
'Programming > Java' 카테고리의 다른 글
Windows 11 에 JDK 21, gradle 설치하기 (0) | 2024.08.16 |
---|---|
FreeBSD 에서 Java 사용하기 (0) | 2012.02.09 |
CentOS에서 JDK 설치하기 (0) | 2011.04.01 |
Debian 6.0 (squeeze) 에서 tomcat 원격접속 안되는 문제 (0) | 2010.01.29 |
Tomcat 6 + Struts 2 + iBATIS 2 + PostgreSQL 8.3 설정하기 (0) | 2009.11.12 |
댓글