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");

 

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

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

posted @ 2016-09-12 09:10  辰殇  阅读(482)  评论(0编辑  收藏  举报