一、靜態中文展示
servlet做頁面
response.setcontenttype("text/html;charset=utf-8/gbk/gb2312");
二、動態傳遞中文引數:可以將中文引數進行單的型別轉換(注意:字元編碼與引數的元字元編碼和引數的目標字元編碼要一致)
*get傳參:直接修改tomcat伺服器中連線期的預設字元編碼為utf-8/gbk/gb2312(在servlet.xml檔案,聯結器中增加屬性 uriencoding="utf-8")
*post傳參
在servlet獲取引數之前呼叫如下方法,對所有的封裝到requset中的引數的字元編碼同義轉換 request.setcharacterencoding("utf-8/gbk/gb2312");(關鍵的**)
假如頁面很多,這種方式就不實用
通過過濾器servlet來呼叫以上方法,對使用者發出請求時的以post方式的傳遞的中文引數進行統一的字元編碼轉換
過濾器屬於servlet的一種,其載入的優先順序高於所有的控制器servlet。其在web容器中的註冊資訊必須放在所有的控制器servlet註冊資訊之前。
操作:1.在配置檔案裡面
myfilter
com.qulx.filter.myfilter
encoding
utf-8
enable
true
/*注意如果只想對針對其中的某些引數進行字元編碼的轉換,可以修改虛擬目錄的名稱,修改/虛擬目錄/*
可以把想過濾的內容放在乙個虛擬子目錄中。
2.在過濾器中寫入,需要實現filter介面
public class myfilter implements filter
}public void destroy()
//執行過濾行為的方法
//filterchain 負責釋放控制權
public void dofilter(servletrequest request, servletresponse response,
filterchain chain) throws ioexception, servletexception
//釋放控制權
chain.dofilter(request, response);}}
*對post傳參和get傳參,都能進行字元編碼轉換,請求的引數.getbytes("iso-8859-1","")
eg :string name = request.getparameter("name");
name = new string (name.getbytes("gbk"));
Servlet中的各種編碼問題
向客戶端輸出中文 response.setcontenttype text html charset utf 8 為什麼表單提交的中文會出現亂碼?當表單提交時,瀏覽器會對中文引數值進行編碼 會使用表單所在頁面的字符集進行編碼 而web伺服器在預設情況下會使用iso 8859 1去解碼,編碼和解碼方式...
Servlet學習 編碼
1.伺服器預設使用iso編碼解碼。一般瀏覽器會把資料當成gbk的。2.伺服器可以使用response.setcharacterencoding utf 8 設定響應編碼。即response.getwriter 這個字元流傳送出去的字元都使用了utf 8。3.伺服器可以使用setheader 方法來設...
servlet中get和post編碼問題
request.setcharacterencoding 是設定從request中取得的值或從資料庫中取出的值 response.setcontenttype text xml charset gbk 是設定頁面中為中文編碼 前者是設定動態文字 引數,資料庫 後者設定頁面靜態文字 response....