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"));
}
//控制台输出为乱码
ä¸å½
ä¸æ
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这就要从Java内部字符编码说起了,也是由于Java中字符串的存储都是Unicode编码,properties文件直接用Unicode也是为了消除除编码差异。
参考:
https://www.cnblogs.com/cwane...
https://stackoverflow.com/que...
Java中properties文件都是使用InputStream inStream 字节流加载的。而InputStream字节流默认使用ISO 8859-1字符编码集。所以需要使用native2ascii工具将utf-8文件进行转码操作。
这是 Java 的一个缺陷,因为当初还没有 Unicode,所以才会这样,从 Java 9 开始,properties 文件已经改为缺省 utf8 编码了。