jsp界面中文乱码的解释

1.servlet中通过request.getRequestDispatcher("test.jsp").forward(request, response)跳转到test.jsp页面,test.jsp中的汉字都显示“?????”,在浏览器中直接跳转到test.jsp页面就是正常的。

这个问题主要是编码不一致引起的,需要在jsp页面设置,servlet中有如下语句设置编码方式:

 response.setCharacterEncoding("UTF-8"); // 先指定输出流的编码

设置服务器端的编码
response.setCharacterEncoding("utf-8”);
默认是ISO-8859-1;该方法必须在response.getWriter()之前进行设置

PrintWriter out = response.getWriter(); // 再拿到输出对象

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

通知浏览器服务器发送的数据格式response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据,这个方法设置发送到客户端的响应的内容类型,此时响应还没有提交。给出的内容类型可以包括字符编码说明,例如:text/html;charset=UTF-8.如果该方法在getWriter()方法被调用之前调用,那么响应的字符编码将仅从给出的内容类型中设置。该方法如果在getWriter()方法被调用之后或者在被提交之后调用,将不会设置响应的字符编码,

另外,还可能是因为tomcat本身的编码问题不一致,找到tomcat的安装目录下的conf文件下的server.xml,查看其编码格式,

 <Connector URIEncoding="GBK" port="8080" protocol="HTTP/1.1" 

               connectionTimeout="20000"
               redirectPort="8443" />

 将所有的都设置为统一的格式后,乱码问题就解决了。


你可能感兴趣的:(jsp,乱码)