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層擷取不到值而報錯。
參考:
全文完
:)