JEP 226:UTF-8 属性资源包
概述
定义一种方法,用于指定以 UTF-8 编码的属性文件,并扩展 ResourceBundle API 以加载它们。
动机
该平台长期以来提供了一种基于 ISO-8859-1 的 properties 文件格式,并为无法用该编码表示的字符提供了一种转义机制。此格式受到标准资源束查找机制的支持。正如相关 RFE(请求增强功能)中所指出的,这种格式难以使用,因为它需要在转义形式和可直接编辑的字符编码文本之间不断转换。
描述
将 ResourceBundle
类的默认文件编码从 ISO-8859-1 更改为 UTF-8,以加载属性文件。通过这一更改,应用程序不再需要使用转义机制来转换属性文件。现有的属性文件很少会受到此更改的影响,因为 ISO-8859-1 的 U+0000 至 U+007F 与 UTF-8 兼容,并且代码点超过 U+00FF 的字符应该已经被转义。如果在以 UTF-8 格式读取属性文件时发生异常(例如 MalformedInputException
或 UnmappableCharacterException
),则会重新从头读取该属性文件,并回退到使用 ISO-8859-1 编码。为了应对极少数情况下 ISO-8859-1 属性文件可能被识别为有效的 UTF-8 文件,本 JEP 提供了一种方法,可以通过设置系统属性 java.util.PropertyResourceBundle.encoding
明确指定编码为 ISO-8859-1 或 UTF-8。