request方式请求post中文乱码处理

1.详解

Request接收参数时有get和post两种请求方式,但是处理中文的编码却不一样,我们在做项目时会全站都采用统一的编码,最常用的就是UTF-8,在UTF-8编码的项目中当我们使用post请求时:

处理post编码问题,请求信息中,只有POST存在正文,所谓POST参数编码就是请求正文的编码。

默认情况下,使用getParameter()获取POST请求参数时,使用的是ISO-8859-1编码。

 

request方式请求post中文乱码处理_第1张图片

 

每个请求在开头只需要调用request的setCharacterEncoding()一次,便可所有的编码都会以这种方式来解读,但要注意,只对请求正文有效(POST参数)。

2.演示

第一种方式:

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class test01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

    /*
    * post方式请求处理中文乱码
    * */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("name");
        String introduce = req.getParameter("introduce");

        // 第一种方式
        name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
        System.out.println(name);
    }
}

第二种方式:

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class test02 extends HttpServlet {
    /*
    * post方式请求处理中文乱码
    * */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 第二种方式  给request设置编码为:UTF-8(必须在getParameter之前使用)
        req.setCharacterEncoding("UTF-8");

        String name = req.getParameter("name");
        String introduce = req.getParameter("introduce");
        System.out.println(name);
        System.out.println(introduce);

    }
}

 

你可能感兴趣的:(java)