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

问题描述 投票:0回答:2

我正在尝试使用constants.propertiesjava.utils.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,但理想情况下,我不想这样做,因为这将意味着再次重写整个常量文件。

java character-encoding properties-file non-ascii-characters
2个回答
0
投票
因此,一旦您设置了正确的Unicode转义,它将被正确读取。

0
投票
this.properties.load(new InputStreamReader( getClass().getClassLoader().getResourceAsStream("configuration.properties"), Charset.forName("UTF-8")));
© www.soinside.com 2019 - 2024. All rights reserved.