JavaWeb:处理请求中文乱码的问题

在Tomcat中,对于POST和GET请求,都默认采用ISO-8859-1的编码方式,而ISO-8859-1不支持中文,所以会出现乱码问题。

解决方案:

        1.按照ISO-8859-1把乱码恢复成二进制形式

            byte[]  data = username.getBytes("ISO-8859-1");

        2.再把二进制形式的数据使用UTF-8重新编码

             String username  =  new String(data,  "UTF-8");

一个参数需要使用两行代码来进行转码操作,如果有N个参数,就需要转N次,代码会大量重复。

解决方案:

        针对POST请求方式:

              request.setCharacterEncoding("UTF-8");

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 对于POST请求,可以设置请求的编码
		req.setCharacterEncoding("UTF-8");
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		System.out.println(username);
		System.out.println(password);
	}
}

              注意:1.只对于POST请求方式有效.    2.必须放在获取任意参数之前.

        针对于GET请求方式:

               修改Tomcat中的server.xml配置文件中修改端口的元素,对GET方式的默认编码。此方式不推荐使用,因为在GET请求方式中一般不会使用到中文。

猜你喜欢

转载自blog.csdn.net/fashion_man/article/details/82388708