文章目录
服务器获取客户端的信息交流以 请求报文、响应报文进行交流,所以服务器读请求报文、以及客户端读响应报文的编码尤为重要。
1. get请求乱码 - 参数数据值放在请求地址的后面
背景:根据标准,URL地址除了字母、数字外,其他任何字符都要经过编码才能发送给服务器。客户端编码、服务器解码类型不匹配,导致解码错乱
解决方法:显示设置客户端对URL地址的编码
- 客户端: 修改Server.XML配置文件:Tomcat目录 → conf → server.xml → 编码
- 服务端: HttpServletRequest.setCharacterEncoding(“UTF-8”) → 解码
2. Post请求乱码
背景:PrintWriter对象默认使用的字符集没有对应unicode编码的中文字符、需要将unicode编码 → utf-8编码
解决方法:更改Unicdoe编码为utf-8 - 添加下列三条语句
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8"); // 可能会用到请求报文中的参数,设置服务器读请求报文的编码
resp.setCharacterEncoding("UTF-8"); // PrintWriter 写入流 字符编码
resp.setContentType("charset=UTF-8"); // 网页输出内容的显示编码
super.service(req, resp);
}