Problema confuso en chino de obtener parámetros de página
Cuando el parámetro de página se obtiene a través del método getParameter ("nombre"), cuando el parámetro de página se ingresa en chino, el parámetro chino obtenido tendrá el problema de caracteres confusos.
P.ej:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="test01" method="post">
账号:<input type="text" placeholder="请输入姓名" name="username">
<br>
密码:<input type="text" placeholder="请输入密码" name="password">
<input type="submit" value="提交">
</form>
</body>
</html>
resultado de la operación:
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/test01")
public class test01_Servlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username"); //获取username的值
System.out.println(username); //打印
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
Método de obtención: los caracteres confusos no aparecerán en el envío, porque el problema se ha resuelto internamente en Tomcat.
Método de publicación: aparecerán caracteres confusos
Solución:
establezca el formato de codificación de caracteres de la transmisión, porque cuando se utiliza la solicitud de publicación, el cuerpo de la solicitud se empaqueta en una transmisión y es necesario
establecer el mismo formato de codificación de caracteres que la página del puerto anterior.
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/test01")
public class test01_Servlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8"); //设置编码格式
String username = request.getParameter("username");
System.out.println(username);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
resultado de la operación: