本帖最后由 阿莱 于 2019-1-2 16:24 编辑  
 
前言: 
 
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:张三 
 
小结: 
第一解决方案有助于我们理解乱码产生的原因,解决起来稍微显得麻烦 
第二种解决方案,代码量小,推荐使用 
 
 
 
 
 |