日期:2014-05-16  浏览次数:20395 次

request.getRequestDispatcher("xx.jsp").forward(request, response);乱码引发的思考

pageEncoding设置JSP源文件和响应正文中的字符集编码.
contentType设置JSP源文件的字符集编码和响应正文的MIME类型.

可见,pageEncoding和contentType都可以设置JSP源文件和响应正文中的字符集编码.但也有区别:

设置JSP源文件字符集时,优先级为   pageEncoding   >   contentType.都没有设置,默认ISO-8859-1.

设置响应输出的字符集时,优先级为   contentType   >   pageEncoding.都没有设置,默认ISO-8859-1;都设置了,以contentType为准.实际上,response.setContentType()就是根据contentType属性设置的

 

在servlet和action的时候

设置响应属性一定要记得加班方法开始的最前端

response.setCharacterEncoding("UTF-8");
  response.setContentType("text/html;charset=UTF-8");

 request.setAttribute("json", obj2.toString());
   request.getRequestDispatcher("json.jsp").forward(request, response);

或者直接输出到页面中也可以

之前也要设置编码类型

//PrintWriter out = response.getWriter();
   // out.write(obj2.toString());