在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ Java國際化為什么需要用native2ascii將含中文的properties

Java國際化為什么需要用native2ascii將含中文的properties文件轉Unicode?(uttf-8格式保存的)

Java國際化開發(fā)時不明白為什么需要將本身就是utf-8格式的含中文的properties文件使用native2ascii工具轉Unicode? 希望能回答解釋一下原理?

#myResource_zh_CN.properties文件
name = 中國
font = 中文
//Java main()
public static void main(String[] args) {
        Locale localeCN = new Locale("zh", "CN");
        ResourceBundle bundle = ResourceBundle.getBundle("myResource", localeCN);
        System.out.println(new String(bundle.getString("name")));
        System.out.println(bundle.getString("font"));
    }
//控制臺輸出為亂碼
??-???
??-?
回答
編輯回答
久舊酒

Java中properties文件都是使用InputStream inStream 字節(jié)流加載的。而InputStream字節(jié)流默認使用ISO 8859-1字符編碼集。所以需要使用native2ascii工具將utf-8文件進行轉碼操作。

2017年4月30日 20:43
編輯回答
假灑脫

這就要從Java內(nèi)部字符編碼說起了,也是由于Java中字符串的存儲都是Unicode編碼,properties文件直接用Unicode也是為了消除除編碼差異。

參考:
https://www.cnblogs.com/cwane...
https://stackoverflow.com/que...

2017年6月1日 23:20
編輯回答
不舍棄

這是 Java 的一個缺陷,因為當初還沒有 Unicode,所以才會這樣,從 Java 9 開始,properties 文件已經(jīng)改為缺省 utf8 編碼了。

2018年6月19日 13:55