tomcat 的get方法编码问题

来源:百度文库 编辑:神马文学网 时间:2024/04/27 22:02:43
       tomcat 的get方法编码问题
最近在用eclipse测试一个小的web程序的时候发现了tomcat的get方法的编码问题

我做了两个页面,一个index.jsp,一个response.jsp,两个页面都用的是utf-8编码,index.jsp页面有一个表单

index.jsp的内容如下:
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>




无标题文档




 

请输入用户名:
   


 


   





response.jsp的内容如下:
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>




无标题文档



<%
String name=request.getParameter("stu");
out.println(name);
%>


这样在tomcat上运行response.jsp页面打印出来的内容总是乱码,整了一个过滤器也没有作用,后来上网查了一下,发现是需要在server.xml文件中配置的。

找到server.xml中        port="8080"
在后面加上URIEncoding="UTF-8"属性

再次运行tomcat,response.jsp页面的乱码才改正过来.

这样设置的时候,将index.jsp中的method改为post后,response.jsp中打印出来的仍然是乱码

要解决这个乱码就需要整个过滤器了,tomcat的servlet例子有一个过滤器SetCharacterEncodingFilter.java,将其在web.xml注册一下,然后再次运行的时候就没有乱码了

综上,在用tomcat开发的,遇到中文的时候要注意几个方面
1.页面采用统一的编码,建议是UTF-8,这个对国际化支持的比较好

2.一般情况,用post方法,然后设置一个过滤器,就可以解决乱码,这个比较通用,在多数服务器都可以运行

3.采用get方法的时候需要设置server.xml,如果应用中get,post都有,最好是既要设置server.xml.又要配置一个过滤器

4.本人试了resin3.10,jetty6.0,两个服务器,就没有这个问题,只要把页面都设为utf-8,就可以了

另外随便说一下,resn3.0.8不支持jdk1.5.0以后的版本,要用jdk1.4

tomcat6.0也没有解决这个问题。有必要用用其他的服务器了.