1. 程式人生 > >web專案使用Tomcat作為伺服器,GET請求引數中文亂碼

web專案使用Tomcat作為伺服器,GET請求引數中文亂碼

問題:

web專案使用Tomcat作為伺服器時,會遇到GET請求亂碼的問題。

原因:

GET請求是將引數拼接到url上向伺服器發起請求的。在Tomcat接收到請求時,會先將url解碼。而預設的編碼方式為"ISO-8859-1",解碼後自然會產生亂碼。

兩種解決方法:

  1. 對URL進行兩次編碼,這樣Tomcat自動解碼出來的仍然是url編碼以後的非中文字元,不會亂碼。但注意在伺服器上獲取引數時需要再解碼一次。
  2. 設定Tomcat的server.xml檔案,在定義處理http請求的聯結器中設定URIEncoding=”UTF-8”。
    <Connector port
="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>

第一種方法,“一切(編碼)盡在掌握”,會感覺更放心。第二種方法沒有研究過是否一定可靠。不過個人感覺一般情況下第二種就足夠了,簡單易艹。