J2EE中文亂碼處理

來源:互聯網
上載者:User

標籤:

      在JAVA WEB開發的過程中,經常會遇到中文亂碼的情況,中文亂碼主要是在瀏覽器與伺服器互動傳遞資料的時候發生的。對於這個棘手的問題,我參考(韓順平老師)視頻將處理方法總結與此,供自己以及大家開發的時候借鑒。

  一、發生中文亂碼的三種情況

     (1)表單提交(form),其中又分為兩種情況,post提交和get提交;

    (2)超連結傳遞參數,例如:www.cnblogs.com?postid=1234567;

    (3)sendRedirect()方法,重新導向url帶有參數的時候。

  二、亂碼原因及處理方法

    (1)表單post提交亂碼

      原因:web伺服器預設採用的是ISO-8859-1的編碼方式解析post資料,所以亂碼出現是由於瀏覽器所傳遞資料編碼方式與伺服器接收編碼方式不一致。

      處理方案:在servlet或jsp中加上 request.setCharacterEncoding("utf-8"); 這裡假定瀏覽器所顯示資料的編碼格式是utf-8。

    (2)表單get提交亂碼

       原因:同上一樣,由於get提交的資料沒有放在請求體內,而是放在請求行中,所以使用上面的方式不能解決

      處理方案:編寫一個轉碼工具類,如下

 1 public class CodingTool { 2     public static String transcoding(String str) { 3         try { 4             return new String (str.getBytes("iso-8859-1"),"utf-8"); 5         } catch (UnsupportedEncodingException e) { 6             e.printStackTrace(); 7             return null; 8         } 9     }10 }

    (3)超連結傳參亂碼情況和get提交亂碼原因及解決方案都一樣

     (4)sendRedirect()方法提交Url中參數出現亂碼

      原因:sendRedirect()方法重新導向時會先回到瀏覽器,再由瀏覽器向下一個servlet發送http請求,在第二次請求的servlet中根據post請求或get請求方式進行處理。

   三、特殊情況

    當用戶端瀏覽器是ie6或以下版本的時候,使用超連結和sendRedirect()傳參這兩種情況任然會出現亂碼(當中文是奇數的時候),解決方案有兩種:

    (1)全面換成GBK編碼,在servlet中這樣進行接收:

        String username = new String (request.getParameter("username").getBytes("iso-8859-1"), "gbk")

    (2)仍然使用utf-8編碼,就需要對要發送的中文進行URLEncoding

      在發送資訊的servlet中,對含有中文的URI進行如下轉碼操作:

        String info = java.net.URLEncoder.encode("圖片.jpg", "utf-8");

        然後使用超連結將info轉寄出去

        response.getWriter().println("<a href=‘/EncodingPro/Test1?imageName=" + info +"‘>test</a>");

        或sendRedirect()方法:

        response.sendRedirect("/EncodingPro/Test1?imageName=" + info );

      接收方:

        String info = new String (request.getParameter("imageName").getBytes("iso-8859-1"), "utf-8");

      

 

J2EE中文亂碼處理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.