在開發過程中,有時候會碰到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參數對數據進行的重新編碼,不同的頁面可以有不同的重新編碼的編碼。
