servlet中解決亂碼的心得

2021-05-26 01:45:30 字數 689 閱讀 3209

在網路程式設計中,我們經常遇到亂碼問題,只要我們知道字元編碼和解碼的原理,這個問題也就不難解決了。在網路傳輸的字元實際上是以iso8859-1形式傳輸的(因為這種編碼方式是單位元組的,只要網路兩端的編碼方式是一樣的,就可以成功解碼)形如%xx%xx%xx...,因此只要我們在程式中用iso8859-1編碼就可以了,解碼就要看具體的網路那頭的程式是怎麼編碼的,是utf-8,還是gbk等等,用相應的即可。

在servlet的doget或dopost方法中,要先寫response.setcontenttype("text/html;charset=utf-8"),然後寫printwriter out = response.getwriter(),reponse.setcontenttype("text/html;charset=utf-8")表示傳送給客戶端的字元是以utf-8編碼的,然後以iso8859-1編碼在網路上傳輸,這時我們用request.getparameter取得的其實iso8859-1字串,我們必須用getbytes("iso8859-1")進行編碼,然後用utf-8解碼才能得到正確的字串。

每次都這樣寫是不是很麻煩呢?有什麼解決的辦法嗎?當然有,那就是寫個過濾器,就是filter,不過這個要注意,只有post方法才能用(就是form表單的method="post")。request.setcharacterencoding就是用來對網路傳輸的位元組重新編碼的。

以上只是自己的心得,僅供參考。

servlet中解決中文亂碼問題

最早的http協議中,並沒有附加的資料型別資訊,所有傳送的資料都被客戶程式解釋為超文字標記語言html 文件,而為了支援多 資料型別,http協議中就使用了附加在文件之前的mime資料型別資訊來標識資料型別。常用的mime型別由兩部分組成 前面是資料的大類別,例如聲音audio 圖象image等,後...

解決servlet亂碼問題

1.解決request的中文亂碼問題 string msg new string request.getparameter message getbytes iso 8859 1 utf 8 2.解決cookie的亂碼問題 cookie name new cookie name urlencoder...

Servlet亂碼問題的解決

以下分析基於以下假設 編碼格式統一採用utf 8 post方式 服務端 在第一次呼叫request.getparameter時,會對parameter進行解析,如果沒有設定解析 解碼 所用的encoding,則使用預設的編碼org.apache.coyote.constants.default ch...