我有一个Spring MVC J2EE应用程序,该应用程序利用Spring的localeChangeInterceptor
和CookieLocaleResolver
来提供语言环境驱动的支持。这是可行的,但是当我尝试对带有重音符号的字母进行编码时,前端无法按预期方式呈现它们。
这是我的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ó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属性文件。