2011-12-16 28 views
0

我正在使用spring mvc。我建立了一個具有兩個簡單文本輸入的Web表單。在控制器上,我使用@ModelAttribute讓Spring從Web表單構建bean。Spring MVC和HTML表單的字符編碼問題

問題來了,當用戶把這些文本字段特殊字符,如酒店和這種東西,春天不會讀它作爲utf-8,他們成爲通常不良編碼的字符串。

我已經檢查過web.xml,並且有utf-8編碼過濾器,所有頁面都被作爲utf-8瀏覽並且瀏覽器正在發送正確的charset頭文件。有什麼想法發生了什麼?

回答

0

您可能要檢查了這一點: http://forum.springsource.org/showthread.php?81858-ResponseBody-and-UTF-8

這樣做的缺點是,如果你是使用註解的方法則正在使用的的MessageConverter有一個默認的字符集。您可以通過設置支持的媒體類型在web.xml中更改此設置。

但是,如果您的服務不喜歡那種媒體類型,您可能會收到406錯誤。您可以創建自己的字符串消息轉換器並設置默認編碼,但內置的HttpStringMessageConverter沒有簡單的方法。

或者你可以重新編碼字符串,以不同的字符集:

String newresponse = new String(responseString.getBytes("ISO-8859-1"), "UTF-8"); 

您可能還需要檢查出的相關問題在這裏:How to get UTF-8 working in Java webapps?

0

blog解釋解決您的問題

解決方法很簡單,通過添加produce =「text/plain; charset = UTF-8」來請求映射,您可以強制spring mvc對返回的文本進行編碼。