科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道J2SE 6 在国际化方面的增强

J2SE 6 在国际化方面的增强

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

对国际化和本地化的支持是Java 标准版一个长处。 Java SE 6 一如既往地为那些注重本地化资源访问和操作的应用程序开发者提供支持。

作者:中国IT实验室 来源:中国IT实验室 2007年9月30日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共4页)



    Java SE 6里提供了 java.util.IDN 类来自持IDNA,此类中提供了一些方法来把unicode编码的域名转换成与ASCII码兼容的域名,这些方法是: toASCII 和 toUnicode 。应用程序在和DNS或者是名称定位服务打交道前,需用 toASCII 方法把域名转换到ASCII码;反过来,使用方法 toUnicode 创建用户可见的 unicode 文本。

    如果在应用程序里输入非ASCII字符集的域名,程序在把数据发送到国际互联网前需要做如下工作:
// 获取应用程序界面上的输入
String strUnicodeName = txtUnicodeName.getText();
// 转换成与ASCII兼容的编码
String strACEName = IDN.toASCII(strUnicodeName);


    如图,使用日本语的域名,变量 strACEName 保存了文本 “xn--wgv71a119e.jp”

“xn--wgv71a119e.jp”这样的文本谁也读不懂,因为这是对字符编码后的样子,只有对计算机和应用程序有用。可以用下面代码演示如何把这样的字符转变为人能读懂的文本:
String strACEName = txtACEName.getText();
String strUnicodeName = IDN.toUnicode(strACEName);


  日本国的日历
---------------
    日本人常使用两种纪年方式:国际上的公元纪年法和他们本国的年号纪年法。几乎所有人都会用公元纪年法,然而日本政府在日常习俗和文件中还常使用年号纪年法。年号纪年法依据天皇在位的时间来定义。

    JAVA编程中使用 java.util.Calendar.getInstance 方法来获取日历对象的实例。通过像演示代码中那样的方式来使用日本国的年号纪年法:
Calendar calJapanese = Calendar.getInstance(new Locale("ja", "JP", "JP"));

    在创建了 Calendar 对象实例后就可在其上使用基于年号纪年法的日期设置,获取以及组装。

    公元纪年法和年号纪年法一个明显区别就是在格式化日期上。java.text.SimpleDateFormat和 java.text.DateFormat 类为新的日历格式提供了支持,可向下面代码演示的那样来对日期格式化和显示:

Date now = new Date();
Locale localeJapanese = new Locale("ja", "JP");
Locale localeImperialJapanese = new Locale("ja", "JP", "JP");
DateFormat dfGregorian = DateFormat.getDateInstance(DateFormat.FULL, localeJapanese);
DateFormat dfImperial = DateFormat.getDateInstance(DateFormat.FULL, localeImperialJapanese);
String strGregorianDate = dfGregorian.format(now);
String strImperialDate = dfImperial.format(now);
txtGregorianDate.setText(strGregorianDate);
txtImperialDate.setText(strImperialDate);


    对 locale 设置了使用 “ja_JP” 后,DateFormat 就用日文字符来表示年月日的格式化结果。如果对 locale 设置了使用  “ja_JP_JP” ,DateFormat 就会输出年号纪年法格式化的日期字符串。如下图所示:



  新增locales
--------------
    在 Java SE 6 里,在现有支持的LOCALE基础上又新添了许多 locale 以支持不同的区域相关类。区域相关的数据来源于 CLDR (http://unicode.org/cldr/),尽管新的区域相关数据被引入了很多,但是不影响以前就存在的那些区域相关的对象。下表列出了 Java SE 6 里新添加了的区域对象

Chinese (Simplified)                    Singapore                    zh_SG
English                                 Malta                        en_MT
English                                 Philippines                  en_PH
English                                 Singapore                    en_SG
Greek                                   Cyprus                       el_CY
Indonesian                              Indonesia                    in_ID
Irish                                   Ireland                      ga_IE
Japanese(Japanese Imperial calendar)    Japan                        ja_JP_JP
Malay                                   Malaysia                     ms_MY
Maltese                                 Malta                        mt_MT
Serbian                                 Bosnia and Herzegovina       sr_BA
Serbian                                 Serbia and Montenegro        sr_CS
Spanish                                 United States                es_US

  小结
------------
    Java SE 6 向开发者敞开大门,让他们能对资源的定位和装载实现更多的控制,这样就使得JAVA平台对国际化的支持更广泛了,同样,也能使用区域相关的服务接口来支持未在JAVA SE 6中提供的区域数据。Normalizer 类不再是私有的了,它能把文本归一化到四种 unicode 标准格式: NFC,NFD,NFKC,NFKD。不用再把域名限制在ASCII编码集了,IDN类提供API来转换非ASCII域名到可用的兼容ASCII编码的域名服务和名称定位服务。新添加了支持日本国的年号纪年法的日期格式化。结束本文前,超过“一打”的新的区域对象已经可以被拿来使用了,这些区域对象的数据是从 CLDR 项目上获得的,这些新添加了的区域对象不会与现存对象冲突。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章