網(wǎng)上很多人都建議用native2ascii把資源文件轉(zhuǎn)為ISO-8859-1編碼,
但是這樣就使用修改等變得麻煩起來,當(dāng)然可以用ant、bat等來處理(建議ant),呵呵。
此時(shí)想介紹一下編程的方式,讓你直接用任何編碼格式的資源文件都有是OK的。
默認(rèn)情況下ResourceBundle取得Bundle調(diào)用了ResourceBundle.Control類中的
即用了這個(gè)構(gòu)造函數(shù)PropertyResourceBundle(InputStream stream)
JDK.API文檔中有說"使用此構(gòu)造方法讀取的屬性文件必須使用 ISO-8859-1。"
這就是為什么你要用native2ascii把資源文件轉(zhuǎn)為ISO-8859-1編碼
再請(qǐng)請(qǐng)看這一構(gòu)造函數(shù)PropertyResourceBundle(Reader reader)
JDK.API文檔中有說"與
如此解決方案有了,只要重寫下面這一方法調(diào)用PropertyResourceBundle(Reader reader)不就OK了嗎?
ResourceBundle.Control類中的
但是這樣就使用修改等變得麻煩起來,當(dāng)然可以用ant、bat等來處理(建議ant),呵呵。
此時(shí)想介紹一下編程的方式,讓你直接用任何編碼格式的資源文件都有是OK的。
默認(rèn)情況下ResourceBundle取得Bundle調(diào)用了ResourceBundle.Control類中的
newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload)
,而此方法實(shí)際上生成并返回PropertyResourceBundle即用了這個(gè)構(gòu)造函數(shù)PropertyResourceBundle(InputStream stream)
JDK.API文檔中有說"使用此構(gòu)造方法讀取的屬性文件必須使用 ISO-8859-1。"
這就是為什么你要用native2ascii把資源文件轉(zhuǎn)為ISO-8859-1編碼
再請(qǐng)請(qǐng)看這一構(gòu)造函數(shù)PropertyResourceBundle(Reader reader)
JDK.API文檔中有說"與
PropertyResourceBundle(InputStream)
構(gòu)造方法不同,關(guān)于輸入屬性文件的編碼沒有限制。"如此解決方案有了,只要重寫下面這一方法調(diào)用PropertyResourceBundle(Reader reader)不就OK了嗎?
ResourceBundle.Control類中的
newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload)
追加一點(diǎn):如果你不知道自己的資源文件的編碼或者資源文件是別人寫的,你寫程序時(shí)不知道,
你可以用cpdetector_V**.jar,這個(gè)可以用來檢測(cè)到文本文件的編碼的