URL中文亂碼問題的解決

來源:互聯網
上載者:User

 今天在做JSP頁面的跳轉時,發現response.sendRedirect("../../../reportstat2/noselect.jsp?message=中文"),結果頁面顯示“中文”是亂碼。且跳轉的兩個頁面都是GBK編碼。上網查得response.sendRedirect("../../../reportstat2/noselect.jsp?message="+java.net.URLEncoder.encode("中文"));經過這樣轉換後,就沒問題了
    用get方法傳遞中文時,必須經過編碼的動作.進行編碼時必須使用java.net套件中的URLEncoder類型的encode類別方法,其文法:java.net.URLEncoder.encode(字串)即:response.sendRedirect("err.jsp?msg"+java.net.URLEncoder.encode("中文")) .
    要注意的是在response.sendRedirect之後,應該緊跟一句return,以防止原來的代碼繼續執行。另外注意的是response.sendRedirect("c.jsp")可能失敗。sendRedirect的參數應該包含Context Path部分,所以應改為response.sendRedirect(request.getServletContext().getContextPath() + "/c.jsp"). 
    還有關於上述的中文問題的另一種解決方案:
String url="../../../reportstat2/noselect.jsp?message=中文";
url=new String(url.getBytes("GBK"),"ISO8859_1");
response.sendRedirect(url);

   如果頁面層用的不是JSP可能無法先做這樣的處理,可以放到背景java處理常式來做編碼的轉換

        String note=“頁面傳入的中文字串”        byte buf[]=note.getBytes("ISO8859-1");           String remark=new String(buf,"GBK");        System.out.println(remark);//顯示的是中文,不是亂碼           

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.