java web中傳遞get方式與post方式下中文亂碼問題
阿新 • • 發佈:2018-12-16
首先確定編譯器建立網頁的中文編碼:
windows-preference-web-css/jsp/html,將其中的 encoding設定為ISO10646/Unicode (UTF-8)
post方式(servlet中的dopost方法):
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8");//使用前設定字符集編碼,此方法僅限post方法有限 response.setContentType("text/html; charset=utf-8");//識別response中文編碼方式 PrintWriter out =response.getWriter(); }
在get中呼叫post傳遞的方式(servlet中的doget方式):
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
//這種方法簡單的說是將傳遞過來的資訊先轉換為byte型別的資料,然後再通過型別轉換為utf-8的字串 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name=request.getParameter("username"); byte[] b=name.getBytes("iso-8859-1");//這兩句僅當使用get方式傳遞時使用,與之上的post方式衝突 name=new String(b,"utf-8");//這兩句僅當使用get方式傳遞時使用,與之上的post方式衝突 String pass=request.getParameter("password"); response.setContentType("text/html; charset=utf-8");//識別response中文編碼方式 PrintWriter out =response.getWriter(); }