关于tomcat中jsp及servlet乱码问题

来源:互联网 发布:商城php源码 编辑:程序博客网 时间:2024/05/10 20:27
 转 关于tomcat中jsp及servlet乱码问题

最近用jsp做网站,遇到最烦人的一件事情就是乱码问题

1、servlet接受中文参数乱码

这个比较容易解决,jsp的第一行加入

<%@ page language="java"  pageEncoding="GBK"%>

具体的编码可以选择gbk、gb2312等

然后在servlet的doget、dopost等service方法中,在输出之前,也就是

PrintWriter out = response.getWriter();

这一行的前面加入

response.setContentType("text/html");
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");

 即可解决

2、jsp接受中文参数乱码

这个问题比较复杂,用out.println("中文")直接输出汉字时,如果出现乱码,一般就是上文提到的jsp文件第一行没有

<%@ page language="java"  pageEncoding="GBK"%>

造成

然而即使加上了上面那一行,由url传递过来的中文参数仍然会显示乱码,这里的原因就是在tomcat将jsp页面编译为servlet的时候,仅仅把pageEncoding="GBK"编译为

response.setContentType("text/html;charset=GBK");

而并没有同时将request编码进行设定,必须在jsp中手工进行设定request.setCharacterEncoding,而设定的位置也很重要,我试过将request.setCharacterEncoding放在pageEncoding下面一行,或者出现乱码的那一行的前面,都没有解决问题,最后将request.setCharacterEncoding放在首次读request前,问题解决,也就是说,一定要在调用request前设置编码

原创粉丝点击