解决 Servlet 乱码问题

我们经常会遇到网页中的乱码问题,这个在确定不是前台浏览器的问题后,就很可能是我们的代码有问题了。

我们程序员身在中国,网页中传输中文是家常便饭,在我们的 Servlet 中写下如下代码是非常管用的:

   1:  req.setCharacterEncoding("gb2312");
   2:  resp.setContentType("text/html;charset=gb2312");

注意:这两行代码一定要写在第一次从浏览器读取数据和第一次从服务器发出数据之前,而且这段代码只对采取 post 方式提交表单有用,get 方式提交这段代码就管不了了。

有人可能会说,我第一个读取的数据肯定不是中文,我把 req.setCharacterEncording("gb2312"); 写在我第一次读取中文数据之前不也一样吗?!结果很遗憾。你会发现你的数据要不就是英文,要不就是问号,因为浏览器传过来的数据 Servlet 是一次性全部读取的,后面的声明字符集已经晚了。所以我们一定要把上面的两句代码写在最前面,反正都是要写的哦。

关于之前说的方法为什么对 get 方法无用呢?我们也可以让其有用,需要改一个地方,改 server.xml 。打开 conf/server.xml ,找到修改端口的那个标签,改成如下即可:

 
   1:  <Connector port="80" protocol="HTTP/1.1" 
   2:                 connectionTimeout="20000" 
   3:                 redirectPort="8443" URIEncording="gb2312"/>
添加了一句 URIEncording="gb2312"。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值