springutil:properties-您可以将编码更改为UTF-8吗?

springutil:properties-您可以将编码更改为UTF-8吗?,spring,utf-8,properties,Spring,Utf 8,Properties,我正在将一些属性文件从iso-8859-1转换为utf-8。我为大多数资源文件实现了resource.control,这样它就可以读取为utf-8编码 我遇到了一个属性文件,它是在spring中使用util:properties标记定义的 我想知道是否有办法指定默认编码为utf-8?我确实考虑过将其定义为具有ReloadableResourceBundleMessageSource的bean的可能性,但是这需要一个大的重构过程,因为bean中的逻辑期望这是一个映射 使用spring 3.0.5定

我正在将一些属性文件从iso-8859-1转换为utf-8。我为大多数资源文件实现了resource.control,这样它就可以读取为utf-8编码

我遇到了一个属性文件,它是在spring中使用util:properties标记定义的

我想知道是否有办法指定默认编码为utf-8?我确实考虑过将其定义为具有ReloadableResourceBundleMessageSource的bean的可能性,但是这需要一个大的重构过程,因为bean中的逻辑期望这是一个映射

使用spring 3.0.5定义

<util:properties id="fooProperties" location="file:${AXE_APPCONFIG}/foo.properties"/>


我知道根据定义java属性文件是iso-8859-1编码的,但是我认为spring可能已经想出了一种方法来更改它的编码(如Resource.Control)

我发现这是不可能的。Spring将始终(从v3.0.5开始)使用属性文件的默认编码,即ISO-8859-1

另一种方法是使用属性对象,然后将其转换为地图

Properties propsToLoad = new Properties();
InputStream stream = new FileInputStream("filename.properties");
propsToLoad.load(new InputStreamReader(stream,"UTF-8));
然后转换成地图

Map<String,String> mapYouWant = new HashMap<String,String>((Map) propsToLoad);
Map-mapYouWant=newhashmap((Map)propsToLoad);

我最近通过使用PropertiesFactoryBean解决了同样的问题。它是的子类,它有一个公共setter方法供您指定属性文件的编码

<beans:bean id="nameOfYourPropsVar" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <beans:property name="location" value="classpath:${yourPropFileName}"/>
    <beans:property name="fileEncoding" value="UTF-8"/>
</beans:bean>

请注意,根据,它仅适用于经典属性文件,而不适用于XML文件