Servlet 編碼問題

2021-08-31 04:17:59 字數 1302 閱讀 7126

一、靜態中文展示

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....