Java国际化为什么需要用native2ascii将含中文的properties文件转Unicode?(uttf-8格式保存的)

新手上路,请多包涵

Java国际化开发时不明白为什么需要将本身就是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"));
    }
//控制台输出为乱码
中国
中æ
阅读 5.9k
3 个回答
新手上路,请多包涵

Java中properties文件都是使用InputStream inStream 字节流加载的。而InputStream字节流默认使用ISO 8859-1字符编码集。所以需要使用native2ascii工具将utf-8文件进行转码操作。

这是 Java 的一个缺陷,因为当初还没有 Unicode,所以才会这样,从 Java 9 开始,properties 文件已经改为缺省 utf8 编码了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏