最近翻閱《深刻分析 Java Web 技術內幕》(做者:許令波),關於Tomcat上Web請求的編解碼問題,少了一個小點,可能影響了部分讀者的理解,我特地查證了一下,特總結以下:html
1. 請求的PathInfo部分用Tomcat的Connector元素的URIEncoding屬性指定的編碼來解碼。web
具體使用可參考:https://tomcat.apache.org/tomcat-8.5-doc/config/http.html。apache
2. 第二先說請求體(POST正文)的解析,Tomcat按下次順序去獲取字符編碼:tomcat
1)用戶經過相似代碼指定:<%request.setCharsetEncoding("utf-8")%>ide
2) 請求報文content-type請求頭指定的編碼。編碼
3)應用web.xml配置的統一編碼(這個目前在Servlet4.0規範中)spa
4) 系統默認的ISO8859-1xml
3. 另外就是QueryString部分的解析,默認狀況下Tomcat採用與1)相同的URIEncoding來解析QueryString。 但同時Tomcat提供了另外一個參數useBodyEncodingForURI。字面意思用報文體編碼來解析QueryString。 若該參數爲true.則Tomcat採用與2)相同的編碼來解析QueryString。htm