弹簧应用程序的字符编码问题

时间:2012-08-09 17:36:01

标签: spring jboss

我正在构建一个使用spring mvc和jpa的应用程序,在eclipse ide中使用jboss7和mysql。我有一个奇怪的问题。我的所有jsp页面都使用charset编码:utf8,我认为它正常工作。但每当我尝试将数据从jsp发布到控制器时,我的数据就会被编码为不同的编码风格。我试图使用firebug查找标题,并惊讶地看到post请求有一个带内容类型的标题:“text / plain; charset = ISO-8859-1”。我已经在我的web.xml中为UTF-8配置了SetCharacterEncodingFilter(它是第一个过滤器)。但问题仍然存在。

我还将“org.apache.catalina.connector.URI_ENCODING”设置为value =“UTF-8”。但是徒劳无功。

此外,我添加了bean messageSource,其属性defaultEncoding设置为“UTF-8”。

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource" > 

问题仍然存在。请帮忙

提前致谢。

2 个答案:

答案 0 :(得分:1)

请求标头由浏览器设置,因此您的应用程序无法控制它。通常,在HTML表单中,您可以使用accept-charset=utf-8属性来指定编码,但这不一定有效。请参阅此问题Setting the character encoding in form submit for Internet Explorer

答案 1 :(得分:0)

您需要设置JVM的编码,如下所示:

-Dfile.encoding=UTF-8 -Dfile.io.encoding=UTF-8 -DjavaEncoding=UTF-8 
因此,根本不会有任何疑问。