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

发布于 2022-09-06 13:02:21 字数 553 浏览 14 评论 0

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"));
    }
//控制台输出为乱码
中国
中æ

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

原野 2022-09-13 13:02:21

这就要从Java内部字符编码说起了,也是由于Java中字符串的存储都是Unicode编码,properties文件直接用Unicode也是为了消除除编码差异。

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

网白 2022-09-13 13:02:21

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

抠脚大汉 2022-09-13 13:02:21

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文