原文連結: www.cnblogs.com/zourong/p/5…
問題描述
近期做任務時,跟後端聯調時遇到一個問題,前端傳送get請求,當引數值有中文時,請求失敗,請求引數變為亂碼。(ps:一般當引數有中文時,很少使用get請求,而是使用post請求來傳輸資料,請求資料放在訊息主體裡,服務端根據請求頭裡的content-type裡定義的編碼格式解碼資料)
後端起本地環境,介面可以跑通,資料可以獲取到。但是在我自己電腦上,同樣的介面全部返回為空。在debug模式下除錯程式碼發現,發現後端拿到的引數值全部是亂碼,那肯定就沒有返回值了。這個時候就納悶了,同樣的程式碼為啥在不同的環境下會出現這個問題?這時很容易想到就是編碼問題。
原因
我們知道get請求,引數經過編碼後會加到請求的url後,get請求經過tomcat處理。這時能想到可能是tomcat編碼的問題,檢視我們兩個人本地的tomcat配置檔案,果然不一樣,後端的tomcat配置檔案加上了URIEncoding="UTF-8" ,可讓Tomcat(預設ISO-8859-1編碼)以UTF-8的編碼處理get請求,此時能正常解析引數中的中文。
解決辦法
第一種:修改tomcat下的conf/server.xml檔案,找到如下程式碼:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
複製程式碼
加上URIEncoding="UTF-8"
第二種:get請求修改為post請求。