【问题标题】:How to configure ResourceBundle "no fallback control" in Java 9如何在 Java 9 中配置 ResourceBundle “无回退控制”
【发布时间】:2017-10-25 08:04:28
【问题描述】:

正如How to ignore the system default Locale to retrieve resourceBundle 中的回答,您可以通过以下方式在 Java 8 或更早版本中配置为不回退到默认语言环境:

ResourceBundle.getBundle("MyResources",
  new Locale("en", "US"),
  ResourceBundle.Control.getNoFallbackControl(ResourceBundle.Control.FORMAT_PROPERTIES))

在 Java 9 中,ResourceBundle.Control 在命名模块中使用时会引发 UnsupportedOperationException:在命名模块中支持 ResourceBundle.Control

如何实现/配置自定义“MyResourcesProvider[Impl]”以实现与提供的ResourceBundle.Control.getNoFallbackControl 相同的行为?

【问题讨论】:

    标签: internationalization java-9 resourcebundle java-10


    【解决方案1】:

    您使用的是 UTF8,而不是 ISO-8859-1?因为 Java 8 及之前的版本将其用于ResourceBundle 和属性文件。

    见:http://openjdk.java.net/jeps/226

    【讨论】:

    • 编码在这里无关紧要:UnsupportedOperationException 是问题所在。
    • 致那些否决我的答案的人 - 你能告诉我它有什么问题吗?还是您只是因为认为这不是@Sormuras 问题的解决方案而投了反对票?
    • @Sormuras 例如,如果您调用URLEncoder.encode(value, "UTF-8");,您可以获得UnsupportedOperationException 不支持的编码。
    • 你让事情变得更糟了。 UnsupportedEncodingException 是——但这与我的问题有什么关系?正确的。没有。我投了反对票,因为“答案没有用”。
    • 不是UnsupportedEncodingException,是UnsupportedOperationException
    猜你喜欢
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 2012-07-25
    • 2021-08-24
    相关资源
    最近更新 更多