关于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前设置编码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值