Servlet的HttpServletRequest对象在Tomcat8中获取参数乱码现象

1.GET请求

   tomcat8之前,GET请求的默认编码格式是欧洲标准:ISO-8895-1

   tomcat8及之后,GET请求的默认编码已经改为UTF-8了

   tomcat8之前修改GET的请求的编码主要有以下几种方式。

   1)在tomcat目录下的conf目录中的server.xml文件中,修改Connector标签的值为

<Connector executor="tomcatThreadPool"
       port="8080" protocol="HTTP/1.1"
       connectionTimeout="20000"
       redirectPort="8443"
       <!-- 添加参数 -->
       URIEncoding="UTF-8" 
       useBodyEncodingForURI="true"/>

   2)在服务中(service/doGet方法中)使用一下语句自己转换编码 : 推荐

String username = new String(request.getParameter("username").getBytes("iso8859-1"),"utf-8");

2. POST请求

  不管是Tomcat8之前还是Tomcat8之后,Servlet在获取到post请求的值的时候,默认编码格式都是ISO-8895-1。所以要解决中文乱码问题,只能在调用getParameter等方法前先改变HttpServletRequest对请求体的编码格式要求,可以先使用下面的语句

request.setCharacterEncoding("utf-8");

 

posted @ 2020-03-29 15:20  linglongfang  阅读(345)  评论(0)    收藏  举报