스프링 프로젝트를 구성하던 중 local,dev,real별 환경설정을 하다가 간단하게
public void test(@Value("${profile}")String currentProfile){
log.info("profile={}",currentProfile);
}
을 했는데 자꾸 한글이 깨지는 것이었다.
처음에는 intellij나 slf4j에서 한글을 받아들이지 못하는구나 생각해서 다음과 같은 방법을 취해봤다.
종류 | 방법 |
---|---|
inteliij | -VmOption -dFile.encoding=UTF-8 |
log4back(slf4j 구현체) | logback.xml, logback-spring.xml 에 appender에 utf-8 추가하는 방법 |
아무리 해도 안되서 근본적으로 의문이 들었다..
아 혹시 Application.properties에서 콘솔로 변환하는 과정에서 utf-8로 변환해서 안주는것 아닌가 하는 의문이 들었고..
Intellij의 간단한 설정을 통해서 해당 문제를 해결할 수 있었다.
근데 생각해보니 application.properties에 한글을 사용할 일이 몇이나 되겠는가...
해당 부분 체크 해주는 것으로 해결할 수 있었다...
따라서 정리하자면...
Standard Java API 들은 ISO-8859-1 기반으로 데이터를 저장하는데, 이는 한글을 지원하지 않는다.
따라서 한글 데이터 출력시 깨지게 된다.
위에 서술했으나, properties 파일의 저장을 UTF-8로 encoding할 수 있도록 한다.