Java中使用properties文件来加载属性资源,通常作为配置项和国际化资源文件。之前该类型的文件只支持ISO-8859-1编码,非ASCII字符要经过转码才能使用,对中文等非拉丁字母语言使用来说很不方便。
从Java 9开始,properties文件可以使用UTF-8编码,java.util.PropertyResourceBundle类支持读取UTF-8编码的properties文件。这意味着可以在该类文件中直接使用Unicode字符而不必进行转码,与此对应之前JDK提供的转码工具native2ascii也被移除了。
Java 9之前:
lang=\\u4E2D\\u6587
Java 9:
lang=中文
已有文件兼容
已有的properties文件不受影响,UTF-8兼容ASCII字符,如果有非法UTF-8字节序列被检测到,Java运行时会重新以ISO-8859-1编码读取该文件。
如果已有的properties文件在Java 9下遇到问题,可以通过以下方式解决:
- 将文件转换为UTF-8编码。
- 设置运行时系统属性java.util.PropertyResourceBundle.encoding=ISO-8859-1