表單提交servlet的兩種解決亂碼方式
阿新 • • 發佈:2019-01-04
@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);
}