2015-05-31 86 views
1

我使用i18n的屬性。如果我指定的非英語語言環境:如何設置捆綁的編碼?

ResourceBundle messages = ResourceBundle.getBundle("i18n/Messages", new Locale("tr", "TR")); 

我看到消息與錯誤的編碼:

ÐÑивеÑ! 

如何設置正確的編碼?

+0

什麼是你的包文件的編碼?你如何輸出這個信息? –

+0

編碼是UTF-8。我通過'System.out.println(title);'打印出來 – JohnWinter

回答

2

問題:默認情況下ISO 8859-1字符編碼用於讀取屬性文件的內容,所以如果文件包含超出ISO 8859-1的任何字符,那麼它將不會被正確處理。

解決方案一: 過程中的屬性文件與ISO 8859-1字符編碼的內容通過native2ascii - Native-to-ASCII Converter

什麼native2ascii的做:它將所有非ISO 8859-1字符在他們的等價\ uXXXX中。這是一個很好的工具,因爲你不需要搜索\ uXXXX等價的特殊字符。

用途爲UTF-8:native2ascii -encoding utf8 e:\a.txt e:\b.txt

如果你使用Eclipse,那麼你會發現,它隱含的特殊字符轉換成爲\ uXXXX等同。嘗試複製

會意字/會意字

成一個屬性在Eclipse文件打開。

第二溶液:創建自定義ResourceBundle.Control類可與ResourceBundle被用於讀取在任何給定的編碼方案的性能。您可能想要使用已創建並共享的CustomResourceBundleControl。 如下使用它:

ResourceBundle messages = ResourceBundle.getBundle("i18n/Messages", new CustomResourceBundleControl("UTF-8"));