java web專案介面請求get,post請求引數中文亂碼解決
阿新 • • 發佈:2018-12-27
java web專案介面請求get,post請求引數中文亂碼解決
在開發過程中,有時候會碰到get,post請求引數中文亂碼。
原因:
Http請求傳輸時將url以ISO-8859-1編碼,伺服器收到位元組流後預設會以ISO-8859-1編碼來解碼成字元流(造成中文亂碼)
解決方案一:
在後臺接收到引數後,對引數進行解碼操作。
缺點:
對每個可能的出現的中文引數,都要進行解碼,麻煩,硬編碼,擴充套件性弱。
String str = URLDecoder.decode((new String(admin.getUsername().getBytes("ISO8859-1"), "UTF-8")), "UTF-8");
解決方案二:
在tomcat安裝目錄下的conf目錄下的server.xml新增如下配置:
新增兩項配置含義:
useBodyEncodingForURI引數表示是否用request.setCharacterEncoding引數對URL提交的資料和表單中GET方式提交的資料進行重新編碼,在預設情況下,該引數為false。
URIEncoding引數指定對所有GET方式請求進行統一的重新編碼(解碼)的編碼。
URIEncoding和useBodyEncodingForURI區別:
URIEncoding是對所有GET方式的請求的資料進行統一的重新編碼,
而useBodyEncodingForURI則是根據響應該請求的頁面的request.setCharacterEncoding引數對資料進行的重新編碼,不同的頁面可以有不同的重新編碼的編碼。