自tomcat5.x起,tomcat就對post與get採用不一樣的解碼方法。 html
對於post提交的中文,咱們通常這麼作:req.setCharacterEncoding(charset); 瀏覽器
對於get:可經過以下設置方式 tomcat
tomcat的config/server.xml post
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> ui
中加入 編碼
useBodyEncodingForURI="true"(推薦) 或URIEncoding="utf-8"(不推薦,tomcat全部App的get處理只能用utf-8解碼) spa
對於返回頁面,必須作相似的設置: 操作系統
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> server
目的是告訴瀏覽器,該經過哪一個字符集解碼。 xml
---------------------------------------------------------------------------------------------------------
若是有哪家熊孩子特別手欠,非要在地址欄輸入中文參數,而你又非要接受的話,能夠這樣:
username = new String(username.getBytes("iso-8859-1"),"gbk");
過程解釋:
編碼:
地址欄輸入中文,瀏覽器使用操做系統默認字符集編碼(GBK);其他正常的get、post提交,用的都是頁面指定的字符集,即<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">指定的utf-8.
解碼:
tomcat拿到這個URL後,
如果post,則按req.setCharacterEncoding(charset);字符集解析,
若爲get,則按server.xml中參數解析(如上述,沒指定參數則爲iso-8859-1)