【问题标题】:@TestPropertySource and UTF-8 support in properties files属性文件中的 @TestPropertySource 和 UTF-8 支持
【发布时间】:2016-08-05 12:42:20
【问题描述】:

我正在为我的 Spring 应用程序进行集成测试,我希望能够使用 UTF-8 编码读取测试类中的属性文件。

现在,如果我想在我的属性中使用 'ä' 字符,我需要将它作为 U\00E4 放入我的属性文件中,因为默认情况下,属性文件是使用 ISO-8859-1 读取的。

如何配置我的测试应用程序上下文以读取 UTF-8 编码的属性文件?

【问题讨论】:

    标签: java spring encoding integration-testing spring-test


    【解决方案1】:

    1.从 UTF-8 文件生成 .properties: 在构建基础结构中,如 maven,可以使用过滤器复制 .properties 文件,该过滤器将构建目录中的 UTF-8 源转义为 ISO-8859-1:将 ĉ 转换为 \u0109

    它的优点是不使用非标准特性,可以使用ResourceBundle。

    2.一个好的属性编辑器: 先前解决方案的缺点是不再可以使用属性编辑器(并排使用不同的语言),这是次要的,因为好的属性编辑器会在后台显示 Unicode 字符和 u-escapes。因此,当使用 属性编辑器 时,您无需执行任何操作并将文件保留在 ISO-8859-1 中。

    3.不是 ResourceBundle 而是属性: 但是类 Properties 可以加载 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 转义。所以尝试使用希腊语、西里尔语进行测试之类的。)

    【讨论】:

      猜你喜欢
      • 2021-08-01
      • 2010-10-05
      • 1970-01-01
      • 2015-01-31
      • 1970-01-01
      • 2018-01-24
      • 2012-04-21
      • 1970-01-01
      • 2018-08-07
      相关资源
      最近更新 更多