1. 程式人生 > >表單提交servlet的兩種解決亂碼方式

表單提交servlet的兩種解決亂碼方式

@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        /*下面的是request亂碼問題*/

        String uname= (String) req.getParameter("uname");
        String pw=(String) req.getParameter("pw");

        uname=new String(uname.getBytes
("iso-8859-1"),"utf-8"); System.out.println(uname+" "+pw); /*下面的程式碼是response的亂碼問題*/ resp.setContentType("text/html;charset=UTF-8");//目的是為了控制瀏覽器的行為,即控制瀏覽器用UTF-8進行解碼; resp.setCharacterEncoding("UTF-8");/*的目的是用於response.getWriter()輸出的字元流的亂碼問題 ,如果是response.getOutputStream
()是不需要此種解決方案的;因為這句話的意思是為了將response物件中的資料 以UTF-8解碼後發向瀏覽器; */ ServletOutputStream out=resp.getOutputStream(); //out.print(uname);//這樣遇到中文還會報錯!! out.write(uname.getBytes("UTF-8")); /*PrintWriter out2=resp.getWriter(); out2.print(uname+"2"); */
//PrintWriter與ServletOutputStream只能二選其一,否則會報錯,用PrintWriter更好 } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /*下面的是request亂碼問題*/ req.setCharacterEncoding("utf-8"); String uname= (String) req.getParameter("uname"); String pw=(String) req.getParameter("pw"); System.out.println(uname+" "+pw); /*下面的程式碼是response的亂碼問題*/ resp.setContentType("text/html;charset=UTF-8");//目的是為了控制瀏覽器的行為,即控制瀏覽器用UTF-8進行解碼; resp.setCharacterEncoding("UTF-8");/*的目的是用於response.getWriter()輸出的字元流的亂碼問題 ,如果是response.getOutputStream()是不需要此種解決方案的;因為這句話的意思是為了將response物件中的資料 以UTF-8解碼後發向瀏覽器; */ PrintWriter out=resp.getWriter(); out.print(uname); }