Servlet 乱码问题

今天在部署一个webservices程序的时候,从页面获取数据的servlet出现了乱码问题,在servlet中我已经把request.setCharacterEncoding("UTF-8");
这段文字加入到代码中去,但是还是出现乱麻问题。
到网上找资料,如下:JAVA是Unicode编码,你先转换成ISO8859-1,然后再转换成UTF-8

request.setCharactrEncoding("ISO8859-1");//先转换成ISO8859-1

name=request.getParameter("name"); //先转换成ISO8859-1

byte[] byte_str =name.getBytes("UTF-8");

String str = new String(byte_str);

这样就是中文啦! 

------------------------------------------------------------------

还有一种更简单的方法,就是直接在服务器里设置编码转换。用的是TOMCAT5.0.28。 
在..\Tomcat   5.0\conf目录里找到SERVER.XML文件,用写字板打开它,设置如下: 
里面增加一个属性就可以了,URIEncoding="GBK"
测试通过,搞定。
 
------------------------------------------------------------------
然后就是request.setCharacterEncoding("GB2312")这句话到底起了什么作用,如果它不能解决乱麻问题,我们用它来起什么作用,整理资料如下:
    (一) JSP页面上是中文,但是看的是后是乱码:
解决的办法就是在JSP页面的编码的地方,因为Jsp转成Java文件时的编码问题,默认的话有的服务器是ISO-8859-1,如果一个JSP中直接输入了中文,Jsp把它当作 ISO8859-1来处理是肯定有问题的,这一点,我们可以通过查看Jasper所生成的Java中间文件来确认

(二) 当用Request对象获取客户提交的汉字代码的时候,会出现乱码:
解决的办法是:要配置一个filter,也就是一个Servelet的过滤器,代码如下:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throws IOException, ServletException {

request.setCharacterEncoding("GBK");

// 传递控制到下一个过滤器
chain.doFilter(request, response);
}
posted @ 2013-10-30 16:47  令狐冲之12  阅读(180)  评论(0编辑  收藏  举报