2

我正在開發一個項目,當我嘗試從屬性文件中使用Java中的ResourceBundle讀取日文字符串時,我得到的只是一堆問號( ?????????)顯示在我的應用程序中。使用資源包從屬性文件中讀取日文字符

我知道我需要以某種方式對字符串進行編碼,但我嘗試了幾種不同的方式,但沒有運氣。我也嘗試在文本編輯器中編碼屬性文件,但這似乎並不工作,我也想要。我的代碼檢索字符串如下。我知道你可以使用流讀取器和其他方法來做到這一點,但我想盡可能使用ResourceBundle來保持當前的代碼結構。如果有人有任何問題或需要澄清,請隨時告訴我。

private final ResourceBundle bundle = ResourceBundle.getBundle("propertiesFile"); 

titleText = bundle.getString("title.text"); 

只給你一個想法,title.text =會議參加者事前登錄用ページ我的屬性文件。

任何建議表示讚賞。這已經變成了一個真正的痛苦。再次

感謝,

-Dave F.

+0

首先,您需要將'.properties'文件編碼爲UTF-8,然後使用其UTF-8編碼表示來存儲這些字符......我之前用西班牙文字符嘗試過,它的工作原理與此類似,所以它應該與日文字符相似 –

回答

0

當你運行你的應用程序,你可以試試這個:

java -Dfile.encoding=UTF-8 -jar YourApp.jar 

這主要設置默認字符集

+0

我也看到了這種方法,但不幸的是該項目使用螞蟻 – MotoDave452

+0

構建爲.war文件即使所有文件都編碼爲UTF-8,也會遇到同樣的問題。 – JFPicard

1

資源包只能讀ISO 8859-1文件。看到這個線程。 How to use UTF-8 in resource properties with ResourceBundle

我這裏有同樣的問題,我已經將我的ResourceBundle到Properties對象就像在這個線程的答案:read resourcebundle as UTF-8. getString() Method seems to change encoding to ISO-8859

像這樣:

InputStream utf8in = getClass().getClassLoader().getResourceAsStream("/path/to/utf8.properties"); 
Reader reader = new InputStreamReader(utf8in, "UTF-8"); 
Properties props = new Properties(); 
props.load(reader); 
+0

非常感謝您的幫助。這似乎是一種可行的處理方式。如果我可能會問,一旦我得到了我的屬性文件的句柄並使用上述方法對文件進行編碼,我將如何獲得屬性文件中的title.text **屬性的句柄並將其值賦給字符串那我可以利用? – MotoDave452

+0

只要做props.getProperty(「title.text」)。此外,您可以將此代碼放入類中,以便在每次需要本地化字符串時不重複該代碼。 – JFPicard

1

經過一番研究,我實際上仍然能夠使用ResourceBundle方法。

在我的屬性文件資源包從拉,我列出的unicode以下幾點:

title.text=\u4f1a\u8b70\u53c2\u52a0\u8005\u4e8b\u524d\u767b\u9332\u7528\u30da\u30fc\u30b8 

當資源包中拔出,將其轉換爲:

會議參加者事前登録用ページ 

我敢肯定,這可能並不是最好的做法,但它不需要改變整個項目在資源屬性中的吸引力,所以我只是認爲我會和大家分享我的幫助。