Tomcat get請求亂碼
歸結是tomcat配置問題,在tomcat server.xml中有2個引數是配置編碼的,一個是URIEncoding,另一個是useBodyEncodingForURI
apache tomcat官方網站對這兩個引數的解釋:
URIEncoding
This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, ISO-8859-1 will be used.
useBodyEncodingForURI
This specifies if the encoding specified in contentType should be used for URI query parameters, instead of using the URIEncoding. This setting is present for compatibility with Tomcat 4.1.x, where the encoding specified in the contentType, or explicitly set using Request.setCharacterEncoding method was also used for the parameters from the URL. The default value is false .
如果http請求中,在contentType中指定了編碼方式,那麼將採用contentType的編碼方式去解碼url之後的查詢引數,將忽略URIEncoding的配置。
所以在get請求時,如果contentType指定了編碼方式,將會帶來一定的問題(最大的問題就是,伺服器端對查詢字串的編碼方式無法統一)。
如果讓useBodyEncodingForURI引數保持預設(false):即所有的URL查詢字串的編碼採用URIEncoding的引數(UTF-8),伺服器端編碼保持原來的統一方式。