文档

Java™教程
隐藏目录
BCP 47扩展
路径: 国际化
课程: 设置区域设置

BCP 47扩展

Java SE 7版本符合IETF BCP 47标准,该标准支持在Locale中添加扩展。任何单个字符都可以用来表示扩展,但是有两个预定义的扩展代码:'u'表示Unicode区域设置扩展'x'表示私有使用扩展

Unicode区域设置扩展由Unicode通用区域数据存储库(CLDR)项目定义。它们用于指定与语言无关的信息,例如日历或货币。私有使用扩展可以用于指定任何其他信息,例如平台(例如Windows、UNIX或Linux)或发布信息(例如6u23或JDK 7)。

扩展被指定为键/值对,其中键是单个字符(通常为'u''x')。格式正确的值具有以下格式:

SUBTAG ('-' SUBTAG)*

在此格式中:

SUBTAG = [0-9a-zA-Z]{2,8}    对于键='u'
SUBTAG = [0-9a-zA-Z]{1,8}    对于键='x'

请注意,私有使用扩展允许使用单个字符值。但是,Unicode区域设置扩展的值必须至少为2个字符。

扩展字符串不区分大小写,但是Locale类将所有键和值映射为小写。

getExtensionKeys()方法返回Locale的一组扩展键(如果有)。getExtension(key)方法返回指定键的值字符串(如果有)。

Unicode区域设置扩展

如前所述,Unicode区域设置扩展由'u'键代码或UNICODE_LOCALE_EXTENSION常量指定。值本身也由键/类型对指定。合法值在键/类型定义表中定义在Unicode网站上。键代码由两个字母字符指定。以下表格列出了Unicode区域设置扩展键:

键代码 描述
ca 日历算法
co 排序类型
ka 排序参数
cu 货币类型
nu 数字类型
va 通用变体类型

注意: 

指定Unicode区域设置扩展,如数字格式,并不能保证底层平台的区域设置服务会遵守该请求。


以下表格显示了Unicode区域设置扩展的一些键/类型对的示例。

键/类型对 描述
ca-buddhist 泰国佛教日历
co-pinyin 拉丁拼音排序
cu-usd 美元
nu-jpanfin 日本金融数字
tz-aldav 欧洲/安道尔

以下字符串表示了在Linux平台上以电话簿样式排序的德语区域设置,代表了德国国家。此示例还包含一个名为"email"的属性。

de-DE-u-email-co-phonebk-x-linux

以下Locale方法可用于访问有关Unicode区域设置扩展的信息。这些方法使用上述德语区域设置示例进行描述。

私有使用扩展

私有使用扩展由'x'键代码或PRIVATE_USE_EXTENSION常量指定,可以是任何内容,只要值格式正确。

以下是可能的私有使用扩展示例:

x-jdk-1-7
x-linux

上一页: 创建区域设置
下一页: 识别可用的区域设置