Java 9中的国际化增强功能包括Unicode 8.0和UTF-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