簡單Servlet專案的中文亂碼問題

2021-08-18 07:27:54 字數 971 閱讀 5088

寫了乙個簡單的servlet專案用來實現購物車功能,主要內容為:在jsp頁面上獲取核取方塊選中的商品,提交後返回乙個頁面顯示所選的商品資訊。

但是魯迅說過,「bug總是無處不在的」。orz。

提交之後返回的頁面總是出現中文亂碼,不管怎麼設定編碼格式都毫無用處,該亂碼的還是亂碼。按道理來說,返回頁面的編碼格式已經被設定好了,是不會出現亂碼的。那麼問題只能存在於從request獲取引數時就已經出現了編碼的格式問題。

谷歌後得知,tomcat在post請求提交時預設使用iso-8859-1編碼,因此,在取出引數時,必須進行一波轉換編碼格式的操作。這裡就涉及到string類的乙個非常低調的建構函式,

public

string(byte bytes,string charsetname)

throws unsupportedencodingexception

該建構函式的意思是以指定的編碼格式編碼byte,構造字串。

於是改動一下獲取的字串,

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知識的無知,以為接觸了皮毛就感覺能做專案,只要有心動腦思考就能完成乙個完整的小專案,其實並不是這樣的,還是踏踏實實的實戰才是最有效的吧,之前也說要好好學習那,但是從開始北漂...