寫了乙個簡單的servlet專案用來實現購物車功能,主要內容為:在jsp頁面上獲取核取方塊選中的商品,提交後返回乙個頁面顯示所選的商品資訊。
但是魯迅說過,「bug總是無處不在的」。orz。
提交之後返回的頁面總是出現中文亂碼,不管怎麼設定編碼格式都毫無用處,該亂碼的還是亂碼。按道理來說,返回頁面的編碼格式已經被設定好了,是不會出現亂碼的。那麼問題只能存在於從request獲取引數時就已經出現了編碼的格式問題。
谷歌後得知,tomcat在post請求提交時預設使用iso-8859-1編碼,因此,在取出引數時,必須進行一波轉換編碼格式的操作。這裡就涉及到string類的乙個非常低調的建構函式,
該建構函式的意思是以指定的編碼格式編碼byte,構造字串。public
string(byte bytes,string charsetname)
throws unsupportedencodingexception
於是改動一下獲取的字串,
再重試,返回結果就正常了。itemname = new
string (itemsselected[i-1].getbytes("iso-8859-1"),
"gb2312"); //取出商品名字
總結關於post,get請求,tomcat預設使用iso-8859-1編碼,當傳遞的引數為中文時,要進行編碼格式的轉化以獲取正確的內容。
像checkbox這種型別的value,盡量使用數字,這樣能夠極大的降低引數傳遞時的亂碼問題。如:
type =
"checkbox" name = "item"
value = "1">糖果
Servlet或springMVC中文亂碼處理
1 如果是get提交,並且tomcat為8.0及以後的版本,tomcat底層已經處理了get提交的中文亂碼問題,所以get提交在tomcat8.0以後的版本沒有中文亂碼問題!2 如果請求是get提交,並且tomcat是7.0及以前的版本,get提交的中文引數,在獲取時會出現亂碼問題!解決方法 在 t...
servlet中獲取request中文亂碼問題分析
request.setcharacterencoding utf 8 第一種情況 log.info 服務商名稱 request.getparameter networkname 服務商名稱 new string request.getparameter networkname getbytes is...
MVC專案的簡單總結
不能說是慶幸吧,正趕上公司要開發乙個小小的mvc專案,於是這樣任務就只有我自己承擔,在這個專案中我才徹底感覺到自己之前有關mvc知識的無知,以為接觸了皮毛就感覺能做專案,只要有心動腦思考就能完成乙個完整的小專案,其實並不是這樣的,還是踏踏實實的實戰才是最有效的吧,之前也說要好好學習那,但是從開始北漂...