表單提交的碼錶分析
- 客戶端與服務器進行數據的傳遞是通過字節碼來傳遞的,客戶端的中文字符的編碼方式查找的是content=”text/html; charset=UTF-8”,當服務器得到字節碼時,調用getParameter()方法進行解碼,該方法默認採用的是iso8859-1來進行解碼。
- 由上述分析可得 解決亂碼問題有倆種方式
2.1 改變getParameter()方法的默認解碼方式
/**
* 設置調用個體Parameter方法時查詢的編碼
* 該方法只能對請求實體內容的數據編碼起作用。POST提交的數據在實體內容中,所以該方法對POST方法有效!
* GET方法的參數放在URI後面,所以對GET方式無效!!!所以get方式提交的表單不能用此方式來設置解碼方式
*/
request.setCharacterEncoding("utf-8");
2.2把得到的以iso8859-1解碼的字符串從新進行編碼(萬能解碼方式--此方式操作不便,需要對每個數據都進行編碼設置)
String name = request.getParameter("name");
name = new String(name.getBytes("iso-8859-1"),"utf-8");
2.3get方式提交的表單可通過修改服務器的解碼方式來解決中文亂碼問題
例如 :在tomcat服務器中找到server.xml文件 找到如下位置配置成如下代碼
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="utf-8" /> //設置uri的編碼