在Tomcat9之前包括Tomcat9的乱码问题
通过request请求去获取用户名,会出现乱码问题
public class Saveservlet extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取用户提交的用户名
String username=req.getParameter("username");
System.out.print(username);
}
}
这个时候需要req.setCharacterEncoding("UTF-8"),他是设置请求体的字符集。
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置请求体的字符集
req.setCharacterEncoding("UTF-8");
//获取用户提交的用户名
String username=req.getParameter("username");
System.out.print(username);
}
这个进行是在post请求里面的,他是解决post请求问题乱码的。
接下来我们来看response响应,
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置请求体的字符集
req.setCharacterEncoding("UTF-8");
//获取用户提交的用户名
String username=req.getParameter("username");
System.out.print(username);
resp.setContentType("text/html");
PrintWriter out=resp.getWriter();
out.print("大家好呀");
}
输出大家好呀,也是乱码,需要调用
resp.setContentType("text/html;charset=UTF-8");
就可以解决这个问题.
get请求发送的时候,数据是在请求行上提交的,不是在请求体当中提交,那么如何解决乱码问题呢?
在浏览器提交数据的时候localhost:8080/servlet03/save?realname=张三,后台没有乱码
注意:从Tomcat8之后,URIEncoding的默认值就是UTF-8,所以GET请求也没有乱码问题了。
当然,你也可以修改( 修改CATALINA_HOME/conf/server.xml配置文件 <Connector URIEncoding="UTF-8" />)