1.决get请求中文乱码问题
@WebServlet("/parseget")
public class PaserGet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String name = req.getParameter("name");
String s = new String(name.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
System.out.println(s);
}
}
2.post请求中文乱码问题
@WebServlet("/parsepost")
public class ParsePost extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding(StandardCharsets.UTF_8.toString());
String name = req.getParameter("name");
System.out.println(name);
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post" action="demo8">
姓名:<input type="text" name="name" /><br />
<button>提交</button>
</form>
</body>
</html>
3.返回中文乱码
3-1 使用HttpServletResponse
@WebServlet("/demo9")
public class Demo9 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setCharacterEncoding("UTF-8");
PrintWriter writer = resp.getWriter();
writer.println("中文");
}
}
3.2 使用HttpServletResponse提供的setCharacterEncoding和setHeader
@WebServlet("/demo")
public class Demo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setCharacterEncoding("UTF-8");
resp.setHeader("Content-Type", "text/html; charset=UTF-8");
PrintWriter writer = resp.getWriter();
writer.println("中文");
}
}