Java 9中的国际化有哪些增强功能?

Java 9中的国际化增强功能包括Unicode 8.0UTF-8属性文件,并默认启用CLDR语言环境数据。Java 9最多支持Unicode 8.0标准,其中包含10,555个字符,29个脚本和42个块。

在Java 9中,属性文件以 UTF-8编码加载。默认情况下,读取输入流会引发MalformedInputException UnmappableCharacterException。在这种情况下,PropertyResourceBundle 实例将重置为异常之前的状态,然后重新读取ISO-8859-1中的输入流,然后继续读取。

如果是PropertyResourceBundle。编码已设置为 ISO-8859-1 或 UTF-8,然后PropertyResourceBundle实例以该编码读取输入流,如果遇到无效序列,则将引发异常。初始化PropertyResourceBundle类时,将读取并评估系统属性,然后任何更改或删除该属性的操作均无效。

如果我们指定ISO-8859-1

  • 无法用ISO-8859-1 编码 表示的字符必须用Unicode 转义符表示。

  • 其他编码值已忽略此系统的属性。

如果有问题,我们可以请看以下选项:

  • 属性文件转换为UTF-8编码

  • 指定运行时系统属性。

java.util.PropertyResourceBundle.encoding=ISO-8859-1