DevLogs/LearningSpring

MessageSource의 한글 깨짐 해결하기

밥먹고해요 2024. 11. 13. 14:13

아래 코드와 같이, messageSource 빈을 ResourceBundleMessageSource로 생성하면, message.properties 파일에 기재한 한글이 깨지는 경우가 발생하는데, 이는 인코딩 문제일 가능성이 거의 99%다.

@Bean
public MessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("messages");
    return messageSource;
}

 

IntelliJ를 사용하는 경우라면, 다음과 같이 설정하면 해결된다.

  • Editor > File Encodings 진입 후, Transparent native-to-ascii conversion 항목을 체크해 준다.
  • Default encoding for properties files 항목은, 기본값 그대로 둬도 되고 UTF-8로 설정해도 된다. (이유는 향후 살펴볼 예정)

 

참고로,

  • 스프링의 ResourceBundleMessageSource 구현체는, 내부적으로 Java의 ResourceBundle 구현체를 이용한다.
  • Java의 ResourceBundle 스펙상 ISO-8859 인코딩을 강제한다고 한다. 그래서, 이런 예외사항이 존재하는 듯하다.