GET請求引數為中文時亂碼分析

鄒R-ainna發表於2018-11-22

原文連結: 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請求。

相關文章