问题解决 Servlet中Request请求和Response响应乱码问题
1、Post请求接收到参数产生乱码原因?
- 客户端以浏览器设置的编码将表单数据传输到服务端
- 服务器默认是以ISO-8859-1编码接收
Request请求解决方案
request.setCharacterEncoding("utf-8");
【注意】这行代码要写到request接收请求参数之前,否则在接收之后也不好使
2、response响应给客户端页面乱码问题?
- 原因:如果输出内容包含中文,则出现乱码,因为服务器默认采用IOS-8859-1编码响应内容
解决Response响应浏览器乱码方案
方案一
- 设置服务器客户端响应的编码格式
- 设置客户端响应内容的头文件类型及编码格式
response.setCharacterEncoding("utf-8");
并且设置响应页面的meta标签中,设置编码为 utf-8
<meta charset="utf-8">
方案二【推荐】
- 同时设置服务器端的编码格式和客户端的响应的文件类型及响应时的编码格式
response.setContentType("text/html;charset=utf-8");
【注意】这行代码要写到response获取输入流之前,否则在之后也不好使!!!
方案三
这行代码也要写到response获取输入流之前
response.setHeader("Content-Type", "text/html;charset=UTF-8");