servlet中通过request.getRequestDispatcher("test.jsp").forward(request, response)跳转到test.jsp页面,test.jsp中的汉字都显示“?????”,在浏览器中直接跳转到test.jsp页面就是正常的。这个问题主要是编码不一致引起的,需要在jsp页面设置,servlet中有如下语句设置编码方式:
response.setCharacterEncoding("UTF-8"); // 先指定输出流的编码
PrintWriter out = response.getWriter(); // 再拿到输出对象
response.setContentType("text/html;charset=UTF-8"); 另外,还可能是因为tomcat本身的编码问题不一致,找到tomcat的安装目录下的conf文件下的server.xml,查看其编码格式,
<Connector URIEncoding="GBK" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
将所有的都设置为统一的格式后,乱码问题就解决了。