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

梦想的初衷 提交于 2020-03-29 15:52:47

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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!