1.以post方法提交的表單數據中有中文字符時
tomcat對請求數據默認采用ISO-8859-1字符集進行解碼,request對象的getParameter()方法得到的字符串是以ISO-8859-1轉換而來的,所以在獲取請求參數值之前,調用setCharacterEncoding("UTF-8")方法,將請求的解碼方式設定為UTF-8.注意:頁面和瀏覽器發送請求也應一致使用UTF-8,通過jsp頁面設置page指令的contentType屬性,指定頁面內容的編碼格式如下
<%@ page contentType="text/html; charset=utf-8" %>
contentType和pageEncoding的區別:contentType定義響應的資源類型,也可以包含jsp頁面和響應內容的字符集;pageEncoding指定jsp文件的字符集及默認的contentType字符集.
2.以get方法提交的表單數據中有中文字符時
采用get方法提交表單時,提交的數據作為查詢字符串被附加到URL的末端發送到服務器,對於這部分數據,在服務器調用setCharacterEncoding()方法是不起作用的,我們需要在得到請求參數值后進行編碼轉換.
<% String userName = request.getParameter("userName"); userName = new String(name.getBytes("ISO-8859-1"),"UTF-8"); %>
3.在Tomcat中設置字符集
當表單提交get方法時,雖然可以通過構造一個新的String方式解決中文亂碼問題,但是當獲取多個參數值時,每個參數都進行重新編碼,操作比較繁瑣.所以可以通過在Tomcat中設置字符集的方式解決.
方法:找到Tomcat安裝路徑下的子目錄conf\server.xml文件,在<Connector>元素中添加URIEncoding屬性,將值設置為"UTF-8"