2011-05-05 39 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