MessageSource 실습 중 실행창에 물음표로 출력되는 현상 질문
IoC컨테이너의 MessageSource 인터페이스 기능을 실습하던 중 실행창에 영어 이외의 문자들이 물음표로만 찍히는 현상이 있는데요.
왜 이런 현상이 발생하며 어떻게 해야 해결할 수 있을까요?

각각의 message properties file명과 내용은 다음과 같습니다.
1. messages.properties
è title={0} Spring
2. messages_ja_JP.properties
è title = {0}スプリング
3. messages_ko_KR.properties
è title={0} 스프링
message source를 출력하기 위한 runner class 코드는 다음과 같습니다.
package me.dave.springapplicaitioncontext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Component;
import java.util.Locale;
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
MessageSource messageSource;
public void run(ApplicationArguments args) throws Exception {
Locale.setDefault(new Locale("en", "US"));
System.out.println(Locale.getDefault());
System.out.println(messageSource.getMessage("title", new String[]{"Hello "}, Locale.getDefault()));
System.out.println(messageSource.getMessage("title", new String[]{"Hello "}, Locale.KOREA));
System.out.println(messageSource.getMessage("title", new String[]{"Hello "}, Locale.JAPAN));
}
}
답변 6
0
동일한 문제가 발생돼 2년전 글이지만 제가 해결한 방법을 남겨봅니다.
editor -> file encoding -> Properties file 의 default encoding을 utf-8로 변경하여 해결하였습니다.
0
흠. 프로퍼티 파일에 입력할 때 값이 잘못들어간거 같은데요? 제가 해당 프로젝트를 받아서 열어보니까 프로퍼티에 입력된 값 자체가 깨져있습니다.

깃헙에서 봐도 그렇구요.
https://github.com/camel-master/SpringExample/blob/master/src/main/resources/messages_ja_JP.properties
0
빠른 답변에 감사드립니다.
encoding과 관련한 여러가지 시도를 해봤지만 모두 실패했습니다.
1. intellij의 file > setting > Editor > File Encodings 에서 인코딩을 UTF-8로도 변경해보고
2. project의 ~.vmoptions file에서 VM option으로 -Dfile.encoding=UTF-8도 설정해봤습니다.
추가로 확인된 사항은 runner class에서 stdio로 콘솔에 단순 문자열을 출력해도 한글이
깨져서 출력됩니다. message resource를 출력할 때는 ????형태였지만 이 것은 완전히
깨진 형태입니다. 혹시 이 것이 message resource에 문제가 발생하는 원인이 아닐까
조심스럽게 예상해봅니다.

테스트 하던 중 특이한 점을 하나 발견했는데 intellij를 실행해서 최근 project를 자동으로 load 할 때
최대한 빠르게 application을 실행하면 stdio를 통한 문자열 출력이 정상적으로 진행 된다는 것입니다.

이것으로 미루어보아 build tool 실행 중에 어떤 문제가 발생하는게 아닐까 생각됩니다만
도무지 찾아낼 수가 없네요.
기선님의 강의와는 다르게 build tool로 gradle을 사용했습니다만, 또 다른 gradle을 사용한
project에서는 한글 콘솔출력이 깨지지 않음을 확인했습니다.
문제의 Project를 올린 Gihub repository를 공유해 드립니다.
https://github.com/camel-master/SpringExample.git
감사합니다.
0
흠.. 콘솔 창의 인코딩이 UTF-8이 아니라 그런거 같은데요. 똑같은 코드를 만들어서 제 환경에서 테스트 해봤더니 잘 보이더라구요. 혹시 윈도우를 쓰고 계시다면 다음 글 참고하셔서 UTF-8로 변경하고 해보시겠어요?
BeanFactory와 ApplicationContext 중 사용하고 싶은 컨테이너를 설정 할 수 있나요?
0
381
1
프로젝트 생성에 관련한 질문
0
376
1
안녕하세요 강의 내용을 듣다가 궁금점이 생겨 글을 남기게 되었습니다.
0
371
1
HttpServeltRequest 객체의 빈 스코프에 대해 질문 드립니다.
0
304
0
PropertyEditor non thread-safe 한 이유
0
491
1
빈의 초기화 시점이 궁금합니다.
0
393
1
이 강의 예제소스 없나요?
0
345
1
릴로딩 기능에 대해
0
404
1
Bean 을 특정 Application...Event 발생 후, 등록하는 방법이 궁금합니다
0
612
3
IoC/DI와 POJO의 관계
1
749
2
기선님 RetentionPolicy에 대해서 질문이 있습니다.
0
291
1
안녕하세요 기선님!
3
486
3
비동기적으로 실행할때
0
314
2
"Prototype/프록시"로 설정했는데 동일한 객체로 나옵니다
0
530
4
@Autowired 로 가져오는 Bean은 ?
2
280
1
Type-Safety 의미
0
538
1
Null Point
0
318
1
WebDataBinder를 특별히 쓰는 이유가 있나요?
0
384
1
안녕하세요?
0
336
2
애노테이션이 없습니다(?)
0
279
3
코드 중 변수 앞에 적는 것이 무엇인지 알고 싶습니다.
0
295
2
강의 하시면서 사용하는 resolving 이란 단어는 어떤 의미인가요?
1
1499
1
IOC컨테이너관련 질문입니다
0
245
3
인터페이스가 있는 경우 인터페이스 타입으로 주입하는 추가 질문입니다.
0
259
1





