相关疑难解决方法(0)

如何在 Java 11 中使用不支持的区域设置以及 String.format() 中的数字

当我通过 输出数字时,如何在JAVA 11中使用不受支持的区域设置(例如ar-US)?String.format()

\n

Java 8中,这工作得很好(尝试jdoodle选择 JDK 1.8.0_66):

\n
Locale locale = Locale.forLanguageTag("ar-US");\nSystem.out.println(String.format(locale, "Output: %d", 120));\n// Output: 120\n
Run Code Online (Sandbox Code Playgroud)\n

Java 11开始,输出采用东方阿拉伯数字(尝试jdoodle使用默认的 JDK 11.0.4):

\n
Locale locale = Locale.forLanguageTag("ar-US");\nSystem.out.println(String.format(locale, "Output: %d", 120));\n// Output: \xd9\xa1\xd9\xa2\xd9\xa0\n
Run Code Online (Sandbox Code Playgroud)\n

看来,这个问题来自于区域设置数据提供程序从JRECLDR的切换(来源:@mcarth 的 Java 9 中的本地化更改)。以下是支持的区域设置列表:JDK 11 支持的区域设置

\n

更新

\n

我将问题示例更新为ar-US,因为我之前的示例没有意义。我们的想法是建立一种在特定国家/地区有意义的格式。在示例中,它将是美国 ( US)。

\n

java locale number-formatting cldr java-11

4
推荐指数
1
解决办法
4191
查看次数

标签 统计

cldr ×1

java ×1

java-11 ×1

locale ×1

number-formatting ×1