好程式設計師Java學習路線分享如何處理中文引數

好程式設計師IT發表於2019-09-27

   好程式設計師Java學習路線分享 如何處理中文引數 為什麼表單中會產生中文亂碼
產生亂碼,就是因為伺服器和客戶端溝通的編碼不一致造成的,因此解決的辦法是:在客戶端和伺服器之間設定一個統一的編碼,之後就按照此編碼進行資料的傳輸和接收

    GET中文亂碼

        //獲取表單提交的姓名

        String name=request.getParameter("name");

        name=new String(name.getBytes("ISO-8859-1"),"UTF-8");

         Tomcat7及以下客戶端以UTF-8的編碼傳輸資料到伺服器端,而伺服器端的request物件使用的是ISO-8859-1這個字元編碼來接收資料,伺服器和客戶端溝通的編碼不一致因此才會產生中文亂碼的。

         解決辦法:在接收到資料後,先獲取request物件以ISO8859-1字元編碼接收到的原始資料的位元組陣列,然後透過位元組陣列以指定的編碼構建字串,解決亂碼問題。

        Tomcat8的版本中GET基本就不會亂碼了,因為伺服器對url的編碼格式可以進行自動轉換

 

    POST亂碼      

         由於客戶端是以UTF-8字元編碼將表單資料傳輸到伺服器端的,因此伺服器也需要設定以UTF-8字元編碼進行接收,並且必須在接收引數之前定義;

        //設定請求引數的編碼格式--對GET無效

        request.setCharacterEncoding("UTF-8");

 

    Servlet輸出中文

 

    1 頁面返回亂碼原因  

         瀏覽器識別不到返回的中文是什麼編碼格式,就會預設使用GB2312,如果返回的是UTF-8格式的那麼在瀏覽器上就會顯示亂碼的問題     

 

    2 如何解決內容中的亂碼        

        response.setContentType("text/html;charset=UTF-8");

 

    3 綜合設定

         在接收引數值之前:

            request.setCharacterEncoding("UTF-8");//設定請求的編碼

            response.setCharacterEncoding("UTF-8");//設定響應的編碼

            response.setContentType("text/html;charset=utf-8");//設定響應型別和響應內容

             的編碼



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2658531/,如需轉載,請註明出處,否則將追究法律責任。

相關文章