当我通过 输出数字时,如何在JAVA 11中使用不受支持的区域设置(例如ar-US)?String.format()
在Java 8中,这工作得很好(尝试jdoodle,选择 JDK 1.8.0_66):
\nLocale locale = Locale.forLanguageTag("ar-US");\nSystem.out.println(String.format(locale, "Output: %d", 120));\n// Output: 120\nRun Code Online (Sandbox Code Playgroud)\n从Java 11开始,输出采用东方阿拉伯数字(尝试jdoodle,使用默认的 JDK 11.0.4):
\nLocale locale = Locale.forLanguageTag("ar-US");\nSystem.out.println(String.format(locale, "Output: %d", 120));\n// Output: \xd9\xa1\xd9\xa2\xd9\xa0\nRun Code Online (Sandbox Code Playgroud)\n看来,这个问题来自于区域设置数据提供程序从JRE到CLDR的切换(来源:@mcarth 的 Java 9 中的本地化更改)。以下是支持的区域设置列表:JDK 11 支持的区域设置
\n更新
\n我将问题示例更新为ar-US,因为我之前的示例没有意义。我们的想法是建立一种在特定国家/地区有意义的格式。在示例中,它将是美国 ( US)。