【发布时间】:2015-02-06 10:33:59
【问题描述】:
我正在尝试从文本文件加载属性,但重音字符 (saül) 采用不同于 UTF-8 的编码,如何避免?
我的属性文件有一个带有重音字符 (saül) 的属性。当我远程调试时,我发现 properties.load(bufferedReader); 将其视为 saül 所以当我写入另一个文件时,它会被写入 saül,我在应用程序的其他任何地方都有 UTF-8 编码。从文件中读取属性时,我不确定自己做错了什么。
try {
final String propertyFilePath = System.getProperty(JVM_ARGUMENT_NAME);
if (StringUtils.hasText(propertyFilePath)) {
setLocalOverride(true);
resource = getApplicationContext().getResource(propertyFilePath);
BufferedReader bufferedReader =
new BufferedReader(new InputStreamReader(new FileInputStream(propertyFilePath), "UTF8"));
properties.load(bufferedReader);
externalFilePasswordConfigurer.afterPasswordPropertiesSet(properties);
LOGGER.info("ExternalFilePropertyConfigurer UTF-8 Reader");
}
setProperties(properties);
logProperties(properties);
} catch (Exception e) {
LOGGER.error("ExternalFilePropertyConfigurer setter failed to set properties: ", e);
throw new RuntimeException(e);
}
【问题讨论】:
-
我不认为这是重复的(ResourceBundle vs Properties)。
-
也就是说,我不确定我是否理解这个问题。如果属性文件使用的是非 UTF-8 编码,那么对 InputStreamReader 使用不同的参数?
-
同意@bkail。应该更改 InputStreamReader 的字符编码参数。
-
大家好,感谢 cmets,我的属性文件有一个带有重音字符 (saül) 的属性。但是,当我进行远程调试时,我发现 properties.load(bufferedReader); 将其视为 saül,因此当我写入另一个文件时,它被写入为 saül,我在其他任何地方都有 UTF-8 编码应用。从文件中读取属性时,我不确定自己做错了什么。
标签: java spring utf-8 properties-file