2009-06-24 62 views
1

我們正在使用JSTL實現i18n,並且遇到了以下問題:在.properties文件中定義的資源文本和具有非ISO 8859字符(例如,伊利語言)的資源文本無法通過標記呈現。ISO 8859以外字符的語言的資源文件

在深入瞭解標籤和BundleHelper類的代碼後,我們發現它最終在內部使用ResourceBundle.getBundle方法,該方法依次使用PropertyResourceBundle將.properties文件作爲資源包加載。

它在內部依賴於java.util.Properties#load(InputStream)方法,它不支持讀取非ISO 8859字符,唯一的解決方法是以/ u十六進制十六進制十六進制格式表示這樣的字符,即如果整個.properties文件是用於印地語的話,這是非常不切實際的!

是否有任何解決此問題的方法。我嘗試在.properties文件中使用XML格式,但沒有被PropertyResourceBundle識別!

環境的詳細信息:JDK 1.5中,WebLogic 9.2

+0

你有沒有嘗試過使用UTF-8? – 2009-06-24 05:55:24

回答

1

你絕對已經使用JDK 1.5?如果您可以移動到1.6,那麼您可以使用load(Reader)重載,這會讓您以其他編碼(例如UTF-8)存儲文件。誠然,我不確定如何適應PropertyResourceBundle。

不要忘記,即使使用ISO-8859-1文件,您也不必使用該格式的文件來編輯編輯。您可以使用native2ascii轉換來自不同編碼的文件。將您的「源」屬性文件保存爲UTF-8,然後運行native2ascii作爲構建的一部分。例如:

native2ascii -encoding UTF-8 Foo.properties.utf8 Foo.properties 
0

寫您的文件在任何你喜歡的編碼,並通過native2ascii工具(自帶JDK出於這樣的目的)作爲構建或部署過程的一部分運行它們。