天天看點

表單送出方式由POST改為GET出現亂碼的解決

隻是簡單的改為method="GET",但這樣一改卻讓action無法得到正确的輸入值,例如使用者在姓名條件裡輸入“張”,在action裡用theForm.getName()會得到形如“%A4”的亂碼,不僅查詢結果是錯誤的,而且在重新顯示的查詢表單的姓名欄裡也顯示出亂碼。

我試了很多種轉碼也沒轉成原來的值,問了很多朋友,最後的解決方式還是通過轉換編碼,是把ISO8859-1轉為UTF-8,即String name=new String(theForm.getName().getBytes("ISO8859-1"),"UTF-8");,注意我的應用程式裡已使用了encoding為UTF-8的Filter。

雖然要加手工轉碼的代碼很不爽,但隻在這一處而已,也不礙大事。隻是我現在的環境是Tomcat+Mysql,不知道換到其他伺服器上會不會重新出現亂碼問題,好在這個項目不需要考慮這個問題。

據說Tomcat處理POST和GET的請求時處理編碼的方式不太一樣,我還看到有篇文章說要在server.xml的<Connector>裡加URIEncoding="GBK"屬性,但我試了不起絲毫作用。

繼續閱讀