使用 java.util.Properties 从属性文件中读取重音字符串

Using java.util.Properties to read accented strings from properties file

我正在尝试使用 java.utils.Propertiesconstants.properties 文件中读取属性。只是,其中一些属性包含重音字符,如 é、è、ô,当我使用 getProperty() 读取它们时,重音被删除。 即:

Générateur de formulaire

变成

Generateur de formulaire

我知道 属性 文件是用 ISO 8859-1 编码读取的,所以我已经尝试过切换字符以进行 unicode 转义:

FORM_GENERATOR_VALUE=Générateur de formulaires

变成了

FORM_GENERATOR_VALUE=G\u0065n\u0065rateur de formulaires

然而,这仍然给出相同的结果。当我停止执行并查看变量时,我使用 getProperty() 从文件中读取的字符串仍然没有重音符号。

这是我的属性的初始化方式:

public Properties constants = new Properties();
constants.load(new FileInputStream("constants.properties"));

我看到一种解决方案是将 属性 文件格式从 .property 切换到 .xml 但理想情况下我不想这样做,因为它会意味着再次重写我的整个常量文件。

\u0065e,而不是 é(即 \u00E9)。

所以一旦你设置了正确的 unicode 转义,它就会被正确读取。

我在使用法语字符时遇到口音问题,所以我使用了以下代码段。我们需要在读取 .properties 文件时传递字符集。

this.properties.load(new InputStreamReader( getClass().getClassLoader().getResourceAsStream("configuration.properties"), 
                        Charset.forName("UTF-8")));