2011-05-05 42 views
12

我使用jQuery AJAX提交表单在支持的Spring MVC的控制器。我在jsp上设置编码。在萤火虫我请求头我看到 -如何使UTF-8的Spring MVC控制器的工作?

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的控制器都在西里尔依次进入垃圾表单值。而对此的一个转折是,这在Safari中正常工作,但不在IE/FF/Chrome中。

有什么想法,我怎么可以设置正确的编码,防止垃圾字符从得到提交?

+0

你有没有'<%@页面的contentType = “text/html的;字符集= UTF-8” %> <%@页面的pageEncoding = “UTF-8” %>'**和** ''在你的页面? – 2011-05-05 10:30:38

+0

是的。它仍然没有工作。 – Pushkar 2011-05-05 11:56:02

回答

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> 
+0

今天帮了我很多。谢谢! – 2012-08-15 22:20:11

+1

这工作完美。 – zmanc 2012-11-20 14:01:58

+0

该解决方案有效,非常好。我想了解为什么它是必要的。所有文件,JSP页面指令,元标记都设置为UTF-8。为什么ISO-8859在firebug中作为accept-charset的第一选项弹出。奇怪... – Daniel 2013-02-12 19:23:21