1. 程式人生 > >java web中傳遞get方式與post方式下中文亂碼問題

java web中傳遞get方式與post方式下中文亂碼問題

首先確定編譯器建立網頁的中文編碼:

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();
}