我有一个Spring MVC J2EE应用程序,该应用程序利用Spring的localeChangeInterceptorCookieLocaleResolver来提供语言环境驱动的支持。这是可行的,但是当我尝试对带有重音符号的字母进行编码时,前端无法按预期方式呈现它们。

这是我的webmvc-config.xml文件中的一个片段:

    <!-- Internalization and localization support -->
    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:messages" />
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>

    <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="lang" />
    </bean>

    <bean id="localeResolver"
        class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
        <property name="defaultLocale" value="en"/>
    </bean>

    <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        <property name="interceptors">
            <ref bean="localeChangeInterceptor" />
        </property>
    </bean>

除此之外,我还有一些message_xx.properties文件,这些文件包含我的标签以将内容渲染出来。包括这样的带有嵌入式重音符号的标签:district.manager.approval=Aprobaci&#243;n del Gerente de Distrito。我的牛肉是,它在前端完全像这样显示,而不是给我显示Aprobación del Gerente de Distrito

知道我哪里可能出问题了吗?

最佳答案

.properties文件的编码通常(除少数例外)应为Latin-1。因此,要显示Unicode内容,您需要对超出Latin-1格式的字符进行转义:
district.manager.approval=Aprobaci\u00F3n del Gerente de Distrito
或使用可以编码为UTF8的XML属性文件。

10-05 23:09