2017-11-04 9 views
1

내 프로그램에서 I18N을 사용하려고하는데 제대로 작동하지 않습니다. 콘솔에는 독일어 기호가 표시되지 않고 '?'만 표시됩니다.Java의 국제화

import java.util.Locale; 
import java.util.ResourceBundle; 

public class LocaleDemo { 

public static void main(String[] args) { 

      Locale l = new Locale("ge", "GE"); 
      ResourceBundle r = ResourceBundle.getBundle("Bundle_ge"); 
      displayValues(r); 
     } 

public static void displayValues(ResourceBundle bundle) { 
    System.out.println("hello message:" + bundle.getString("wish")); 
} 
} 

파일 Bundle_ge.properties이 텍스트가 있습니다 : 여기

내 코드입니다

enter image description here

내 실수는 무엇입니까 : 여기 wish=großer

그리고이 결과인가? 미리 감사드립니다.

+0

코드 페이지 및 인코딩에 대해 조사하고 싶습니다. – GhostCat

+0

문제와 관련이 없지만 로캘을 만들고 있지만 사용하지 않고 Bundle을로드하는 대신 Bundle_ge를로드하고 getBundle 메서드가 로캘에 따라 적절한 파일을로드하도록합니다. 'ResourceBundle.getBundle ("Bundle", l)' –

+0

미안하지만 왜 'Bundle_ge' 대신에'Bundle'을 사용해야하는지 이해할 수 없습니까? 내 등록 정보 파일에는 다음과 같은 제목이 있습니다 : Bundle_ge.properties 또한 다른 언어에 대한 많은 등록 정보 파일이있을 수 있습니다. – LuckyProgrammer

답변

2

메시지 묶음은 ISO-8859-1 인코딩으로 읽습니다. 따라서 ISO-8859-1에 저장해야합니다. 그들이 있는지 확인하십시오. 대부분 UTF-8로 저장되어 있습니다!

또는 - 특수 문자로 유니 코드 코드를 사용하십시오. 독일어 움라우트와 SZ 들어 : 자동으로 리소스 번들을 변환 도구가 있습니다

ä = \u00e4 
Ä = \u00c4 
ö = \u00f6 
Ö =\u00d6 
ü = \u00fc 
Ü = \u00dc 
ß = \u00df 

. 나는. IntelliJ의 Resource Bundle Editor가 지원합니다.

문제가 해결되는지 확인하십시오.

+0

이상하게 보이지만 러시아어로 된 프로그램은 보여 주지만, 독일어는 그렇지 않습니다. – LuckyProgrammer