1.2 请求参数中文乱码,post解决方案

原因:
POST 请求的参数是放在请求体中传输的,Tomcat 默认使用 ISO-8859-1 编码解析请求体(该编码不支持中文),当参数包含中文时,就会出现乱码(比如 “张三” 变成 “å¼ ä¸‰”)。
解决:
在获取 POST 请求参数之前,通过 HttpServletRequest 的 setCharacterEncoding("UTF-8") 方法,指定请求体的解析编码为 UTF-8,这是最基础且必须的步骤。
注意:
req.setCharacterEncoding("UTF-8") 必须在获取参数之前调用(比如 req.getParameter() 之前),否则无效。
该方法只对 POST 请求有效,对 GET 请求无效(GET 请求参数在 URL 中,编码由 Tomcat 配置控制)。
若同时需要返回中文响应,必须加 resp.setContentType("text/html;charset=UTF-8"),否则响应内容会乱码。
优化:
全局过滤器
如果每个 Servlet 都手动写 req.setCharacterEncoding("UTF-8"),代码冗余且容易遗漏,推荐使用 CharacterEncodingFilter(字符编码过滤器),一次性解决所有 POST 请求的中文乱码问题。

posted @ 2026-01-05 22:32  气球飞起  阅读(21)  评论(0)    收藏  举报