我正在为Spring应用程序进行集成测试,我希望能够使用UTF-8编码读取测试类中的属性文件。
现在,如果我想在我的属性中使用'ä'字符,我需要将其作为U \ 00E4放在我的属性文件中,因为默认属性文件是使用ISO-8859-1读取的。
如何配置我的测试应用程序上下文以读取UTF-8编码的属性文件?
答案 0 :(得分:2)
<强> 1。从UTF-8文件生成.properties:
在构建基础结构(如maven)中,可以使用过滤器复制.properties文件,该过滤器将UTF-8源转义为构建目录中的ISO-8859-1:将ĉ
转换为\u0109
}。
它的优点是不使用任何非标准功能,并且可以使用ResourceBundle。
<强> 2。一个好的属性编辑器: 先前解决方案的缺点是不再可以使用属性编辑器(并排使用不同的语言),因为良好的属性编辑器在后台显示Unicode字符和u-escapes。因此,在使用属性编辑器时,无需执行任何操作,并将文件保留为ISO-8859-1。
<强> 3。不是ResourceBundle,而是属性:
但是,属性类可以加载UTF-8。那么就不应该使用ResourceBundle。
在Spring中,这意味着,请不要使用ResourceBundleMessageSource
,而应使用ReloadableResourceBundleMessageSource
。
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value=".../test/classes/..."/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="fileEncodings" value="UTF-8"/>
</bean>
(顺便说一句:ä
或\u00E4
是一个ISO-8859-1字符,当编辑器设置为ISO-8859-1时,不需要u-escaping。所以尝试测试希腊语,西里尔语等。)