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

2022-02-28 15:07:53 字數 786 閱讀 9896

組合查詢功能,原先使用預設是以post方式提交的,增加了分頁功能後,由於要在url裡記住使用者提交的查詢內容(例如:http://localhost:8080/aims/client/filter.do?name=%e5%bc%a0&address=%e5%8c%97%e4%ba%ac&title=&duty=&departmentcode=10000001&categorycode=10000002&fieldcode=10000006&gendercode=&identitycode=),所以表單的提交方式要改為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的裡加uriencoding="gbk"屬性,但我試了不起絲毫作用。

表單的提交方式POST和GET

post和get都是表單屬性method的可選值,method的預設值為get,兩者的主要區別在於 1.在客戶端,get方式在通過url提交資料,提交後在位址列中的位址如圖1.4.3所示。圖1.4.3 get方式提交表單後的位址列 而post提交後地欄不變,如圖1.4.4所示。圖1.4.4 post...

表單的提交方式POST和GET

post和get都是表單屬性method的可選值,method的預設值為get,兩者的主要區別在於 1.在客戶端,get方式在通過url提交資料,提交後在位址列中的位址如圖1.4.3所示。圖1.4.3get方式提交表單後的位址列 而post提交後地欄不變,如圖1.4.4所示。圖1.4.4post方式...

c 以POST方式模擬提交表單

這是我一年前寫的乙個用c 模擬以post方式提交表單的 現在記錄在下面,以免忘記咯。那時候剛學c 忽忽。很生疏。看上去也很幼稚 臃腫不堪 region 內容新增函式 contentinsert public string contentinsert string bookid,string book...