请求参数中中文乱码
Post请求
在发送HTTP请求报文时,中文是UTF-8格式
HTTP请求报文到达服务器,被服务器解析,封装到Request对象中,此时取出中文,发现已经乱码了。说明了再解析的过程中出现了问题。
怎么解决?
request.setCharacterEncoding("utf-8");
注意:
- 该方法可以重写请求体里面的编码格式
-
Get请求
响应中文乱码
//response输出中文到客户端response.getWriter().println("你好");
客户端显示 ???
//设置响应报文为UTF-8response.setCharacterEncoding("utf-8");response.getWriter().println("你好");
设置成utf-8之后,乱码由之前的???变成了娆㈣繋鎮�,说明了设置了之后使用的编码格式支持中文了
设置了发送个客户端的响应报文的编码格式为utf-8,浏览器拿到之后解析乱码了,说明了浏览器使用的不是utf-8。乱码主要问题是服务器和浏览器没有沟通好使用哪个编码格式。
怎么解决?
服务器设置一个编码格式,将使用的编码格式告诉给客户端即可
怎么告诉客户端? 通过响应头
- 通过响应体
设置响应头
//response.setCharacterEncoding("utf-8");//设置Content-Type其实这个头有两个功能://1.告诉给客户端使用的编码格式//2.服务器也会主动设置该编码格式,所以上面的setCharacterEncoding其实可以直接省略response.setHeader("Content-Type","text/html;charset=utf-8");response.getWriter().println("欢迎!");
设置响应体
response.setCharacterEncoding("utf-8");response.getWriter().println("<!DOCTYPE html>\n" +"<html lang=\"en\">\n" +"<head>\n" +" <meta charset=\"UTF-8\">\n" +" <title>Title</title>\n" +"</head>\n" +"<body>");response.getWriter().println("欢迎您!!!");response.getWriter().println("</body>\n" +"</html>");
