如何使Spring MVC控制器与UTF-8一起工作?

时间:2011-05-05 10:01:31

标签: ajax jquery spring-mvc internationalization

我正在使用jQuery AJAX将表单提交给支持的Spring MVC控制器。我在jsp上设置编码。在我的Firebug请求标题中,我看到了 -

Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive          115
Connection          keep-alive
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With    XMLHttpRequest

然而,在我的Spring MVC控制器中,所有在Cyrillic中输入的表单值都变成了垃圾。对此的一个转折是,这在Safari中运行良好,但在IE / FF / Chrome中没有。

有关如何设置正确的编码并防止垃圾字符被提交的任何想法?

1 个答案:

答案 0 :(得分:27)

我找到了解决这个问题的方法。我已经在每个jsp页面的顶部设置了编码。但它没有用。所以我在web.xml中添加了一个spring字符编码过滤器。这将确保在请求中正确编码。

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
 </filter>

 <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
 </filter-mapping>