Servlet转码问题

HttpServletRequest获取页面数据

提交表单时,Servlet直接从页面通过HttpServletRequest对象的getParameter(String arg0)获取参数时

默认编码解码方式为iso8859-1,而浏览器会对中文参数值进行编码(会使用表单所在页面时的字符集编码);

编码和解码方式不一致时就会出现乱码。解决方式:

一般页面的编码集为utf-8(注意页面使用的编码集),所以在服务端采用这种方式解码就行了;

但是由于请求方式不同有不同解决方法:

1.get的请求方式时:

  可以在tomcat的配置文件server.xml中配置的节点添加(加粗部分)

<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

2.post的请求方式时:

  需要直接在获取参数之前设置解码方式

request.setCharacterEncoding("utf-8");

3.两种情况都适用的方法(麻烦、不适用)

  就是按默认解码方式获取的数据取得后,再自己写代码去解码再编码,但是每个会乱码的参数都需要,所以很麻烦

byte[] bs = user.getBytes("iso8859-1");
user = new String(bs,"utf-8");

 

HttpServletResponse返回数据

可以在返回数据前设置,通知容器使用指定的字符集

response.setContentType("text/html;charset=utf-8");

或者单独设置

response.setCharacterEncoding("utf-8");

 

注册博客园已经半年了,看了很多大神的文章,也解决了不少问题,很多次想写下自己的第一篇博客,但是一直很忐忑

没有一次开始,今天终于下定决心,虽然写的很简单,也不够清晰的感觉,但是走出了自己的第一步,希望自己能够在这条路走得更远。

转载于:https://www.cnblogs.com/ZqNote/p/5863565.html

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值