servlet开发中字符集的处理(彻底解决乱码问题)

最近在看《servlet与jsp核心编程这本书》,涉及到字符集处理这一章节,由于本人对这块也是很迷糊,所以经过反复设计验证,彻底解决了从客户端请求到服务端响应输出乱码的问题,在此做下小结。

我们知道客户端发送一次请求,先要经过servlet容器(后文都称作tomcat)的过滤器进行过滤,然后经过servlet进行处理,处理后的结果可以直接采用HttpServletResponse的getWriter()方法输出到客户端,也可以直接携带参数跳转到jsp页面,整个过程中有两个地方会导致乱码问题的出现:

1.浏览器向tomcat发送请求

大多数时候我们都会采用GET请求的方式访问服务器(例如:http://localhost:8080/strutsSpringMybatis/responseAction?name=“小明”),那么请求在到达tomcat服务器后,如果你没有设置过编码,那么该请求会采用tomcat默认的编码方式(也就是“ISO8859-1”),进行编码,那么此时你用HttpServletRequest的getParameter()方法打印输出到日志中,必然会产生乱码,此时就要对tomcat的默认字符集进行设置了,有两种方式:

① 直接在tomcat的安装包根目录/conf/server.xml中设置

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"

               redirectPort="8443" URIEncoding="UTF-8"/>

② 利用String设置编码(但该种方式亲测输出到控制台仍旧乱码,不明原因)

 String name=request.getParameter("name");

String myname=new String(name.getBytes(),"UTF-8");

大多数开发中肯定采用第一种方式,因为不需要在每个请求的线程中对字符编码进行设置。


2.服务端响应

数据输出到服务端时如果不进行设置,它也会采用默认得编码集(“ISO8859”)进行编码,因此需要做如下设置:

HttpServletResponse res=ServletActionContext.getResponse();

res.setCharacterEncoding("UTF-8");

此时不论是输出到jsp还是直接输出到控制台,均不会出现乱码。

3.总结

这是对于在servlet开发时出现乱码时的几种快速的解决办法,但是并不是很正规,使用起来也很麻烦,其实在实际项目中大多数都是使用的servlet的过滤器进行字符集的设置,然后对请求和响应进行过滤,此种方法下次再做介绍吧!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值