tomcat字符亂碼正解(全)

自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)

相關文章
相關標籤/搜索