如果您有 ISO 国家/地区代码“US”、“FR”,如何获取区域设置代码(“Locale.US”、“Locale.FRANCE”)?

如果您有国家/地区代码 ,(ISO-3166-1 alpha-2 国家/地区代码),如何获取区域设置代码 (, ) 来执行如下操作:USFRLocale.USLocale.FRANCE

System.out.println(DecimalFormat.getCurrencyInstance(Locale.US).format(12.34));
System.out.println(DecimalFormat.getCurrencyInstance(Locale.FRANCE).format(12.34));

$12.34
12,34 €

答案 1

您不能,因为区域设置用于保存语言,而不是国家/地区。它可以保存特定国家/地区的语言,也可以保存该国家/地区的特定变体的语言,但它首先是一种语言。一种语言和一个国家之间没有一对一的关系。大多数语言在各个国家/地区使用,许多国家/地区都有多种语言。

如果您有某种语言的国家/地区代码,则可以使用 .但是使用国家/地区代码,您所能做的就是调用 ,循环访问结果,然后找到一个具有您的国家/地区代码的代码。但可能有几个。new Locale(code)getAvailableLocales


答案 2

在Java7中有,但在此之前没有一个简单的方法。但是,您可以创建实用程序方法:Locale.Builder

  1. Locale.getAvailableLocales()
  2. 对于每次检查是否并返回它locale.getCountryCode().equals(countryCodeParam)