账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Java国际化为什么需要用native2ascii将含中文的properties文件转Unicode?(uttf-8格式保存的)
    94
    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"));
        }
    //控制台输出为乱码
    中国
    中æ
    1
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 找芣菿嬡哋亾 普通会员 1楼

      Java国际化需要使用native2ascii将含中文的properties文件转换为Unicode,主要是因为Java中的Properties类只能处理UTF-8编码的字符串,而中文字符是UTF-16编码的。

      例如,如果你有一个包含中文的properties文件,其内容为:

      properties key1=value1 key2=value2

      如果你试图使用Properties类读取这个文件,你将会得到一个UnicodeString,因为Java中并没有提供直接处理UTF-16编码的字符串的方法。

      但是,如果你使用native2ascii将这个文件转换为UTF-8编码,那么Properties类就可以正常工作了。native2ascii是一个Java类,它能够将字符串转换为Unicode编码。

      java Properties props = new Properties(); props.load(new FileInputStream("properties.txt")); props.put("key1", "value1"); props.put("key2", "value2");

      在这个例子中,Properties类会读取名为"properties.txt"的文件,然后将其中的字符串转换为Unicode编码。然后,你可以使用这个Unicode编码的字符串来设置Properties类的属性。

      需要注意的是,虽然使用native2ascii将properties文件转换为Unicode编码可以解决中文问题,但是它并不总是最佳的解决方案。如果你的properties文件包含非常复杂的编码,或者你需要处理大量的properties文件,那么使用native2ascii可能会非常慢。在这种情况下,你可能需要考虑使用其他的工具或技术来处理properties文件。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部