天天看點

java bundle id_Java 使用 ResourceBundle 類讀取 properties 檔案中文亂碼的解決方案

Java使用java.util.ResourceBundle類的方式來讀取properties檔案時不支援中文,要想支援中文必須将檔案設定為ISO-8859-1編碼格式,這對于開發工具預設為UTF-8來說很不友好,而且就算用ISO-8859-1編碼,當其他人将這個項目導入開發工具時很容易出現這個properties檔案中的内容有亂碼(前提是該檔案中包含中文)。

//傳統的解決方式:檔案設定為ISO-8859-1編碼格式

public static voidmain(String[] args) {

ResourceBundle rb= ResourceBundle.getBundle("weixinreply");

String kefuReply= null;try{//這樣直接讀取中文會亂碼

kefuReply = rb.getString("kefureply_festival");

System.out.println("kefuReply=" +kefuReply);//這樣讀取中文不會亂碼

kefuReply = new String(rb.getString("kefureply_festival").getBytes("ISO-8859-1"),"GBK");/System.out.println("kefuReply=" +kefuReply);

}catch(UnsupportedEncodingException e) {

e.printStackTrace();

}

}

//更加人性化的解決方式:檔案設定為UTF-8編碼格式,并且在spring加載properties檔案時指定為UTF-8編碼格式,在使用的類中通過spring的 @Value("${key}")注解來擷取properties檔案中對應的值。

app-env-config.xml檔案中定義如下内容

classpath:weixinreply.properties

app-env-config.xml需要在applicationContext.xml檔案中引入,這樣才能保證 @Value("${key}")注解在Controller層和Service層都能擷取到值,否者很容易造成 @Value("${key}")注解在Controller層擷取不到值而報錯。

參考:

全文完

:)