2013-01-23 21 views
0

我有一個表單,它將被提交給Struts Action並進行處理並返回輸出。在表單提交過程中發送特殊/區域特定字符

但是,如果用戶提交表單,輸入數據會有「Louvière」這樣的特殊字符,在後端,Struts將該值作爲「LaLouvi re」提取。

我該如何處理這種情況,因爲輸入應該特別接受歐元字符。

在jsp頁頭

我編碼如

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 

和形式等

<s:form id="myform" action="myAction" method="POST"> 

回答

2

缺省情況下的編碼等於含有<form>元素的文檔的編碼定義。因此,要麼改變含有<form>像這樣

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

文檔的字符集指令或accept-charset屬性添加到表格元素像這樣:

<s:form id="myform" action="myAction" method="POST" accept-charset="utf-8"> 

瀏覽器應該然後使用聲明字符集時提交POST請求。

旁註,歐元符號(€)不是iso-8859-1的一部分,而是iso-8859-15的一部分。

+0

試過。還是?正在提交[使用iso-8859-15]。如果我使用utf-8我正在接受?而不是è在視圖本身,我需要顯示它爲è,如果用戶通過提交è搜索某些內容,它應該完全接受。 難道這是Spring/struts的問題嗎? – Reddy

+0

@NitinGurram,「如果我使用utf-8,而不是è在視圖本身」 - 你似乎有多個編碼問題。如果你看到 ?而不是è這很可能意味着服務器實際上正在發送latin1(iso-8859-1),但是如果您設置了您告訴瀏覽器將其解釋爲utf- 8,這顯然是錯誤的,所以,不要混淆''當來自請求Struts的_read_值取決於瀏覽器在提交時設置的字符集時,有時瀏覽器根本就不設置它 –

+0

@ NitinGurram,你可以支持服務器檢測使用哪個字符集(如果它不在請求中),例如Spring的'CharacterEncodingFilter' http://static.springsource.org/spring/docs/3.0.x/api/org/springframework /web/filter/CharacterEncodingFilter.html。有關更多信息,請參閱http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8。 –