tomcat8的post乱码的两种解决方案

前言:

tomcat8版本之前,get和post请求的中文都会出现乱码的现象,升级到8版本之后对对get请求的乱码做了处理,但是post请求的中文依然会出现乱码。

一、post乱码的分析

post请求乱码产生的原因以及解决方案:

二、第一种解决方案

逆向编码和解码:

[Java] 纯文本查看 复制代码

?

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//获取用户输入的用户名
    String username = request.getParameter("username");
    System.out.println("乱码处理前:"+username);
    //使用ISO-8859-1进行编码
    username = URLEncoder.encode(username,"ISO-8859-1");
    //使用UTF-8进行解码
    username = URLDecoder.decode(username,"UTF-8");
    System.out.println("乱码处理后:"+username);
}

测试打印结果:

乱码处理前:??????

乱码处理后:张三

二、第二种解决方案

在所有获取数据之前设置请求体的编码:

[Java] 纯文本查看 复制代码

?

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//处理post请求的乱码问题
request.setCharacterEncoding("UTF-8");
//获取用户输入的用户名
String username = request.getParameter("username");
System.out.println("username:"+username);

}

测试结果:

username:张三

小结:

第一解决方案有助于我们理解乱码产生的原因,解决起来稍微显得麻烦

第二种解决方案,代码量小,推荐使用

原文 

https://segmentfault.com/a/1190000020997946

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » tomcat8的post乱码的两种解决方案

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址