2010-12-17 27 views
4

我設置CharacterEncodingFilter在我的web.xml中的第一個過濾器:CharacterEncodingFilter不是在Spring MVC的翻譯Unicode文本3.0

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

,在我的JSP這樣的:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" isELIgnored="false" %> 

這:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 

但是,例如,從JSP表單傳遞迴控制器,然後返回到JSP再次成爲:T%E

我已完成Google搜索小時,但無法找到此問題的答案。任何幫助,將不勝感激。

+1

您的控制器是否對錶單數據執行了任何操作,例如將其存儲在數據庫中,還是隻是將其放回到JSP中?換句話說,這可能是數據庫連接上的編碼問題嗎? – gutch 2010-12-17 05:36:36

+1

您是否使用ajax發送表單並接收數據? – Javi 2010-12-17 08:18:42

+1

你確定你的瀏覽器發送了正確的頭文件(你可以使用Firebug)嗎?你的表單的方法是GET還是POST? – sinuhepop 2010-12-17 10:57:28

回答

3

如果您使用Tomcat,則可能沒有在您的server.xml中設置URIEncoding。如果你不把它設置爲UTF-8,它將無法工作。絕對保持CharacterEncodingFilter。儘管如此,下面是一個簡潔的checklist。它一定會指導你做這項工作。

1

如果CharacterEncodingFilter或您實現濾波器是在web.xml頂部,一定也有在XML的CharacterEncodingFilter<filter-mapping>元素出現之前其他<filter-mapping>元素其他過濾器。

花了很長時間才弄清楚。可能對某人有用。