1. 程式人生 > >java web專案介面請求get,post請求引數中文亂碼解決

java web專案介面請求get,post請求引數中文亂碼解決

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引數對資料進行的重新編碼,不同的頁面可以有不同的重新編碼的編碼。