在使用tomcat9以及之前的版本,request-character-encoding和response-character-encoding使用的字符编码默认不是utf-8,所以导致前端发送到后台的中文乱码.如果使用的是tomcat10以及之后的版本,在apache-tomcat-10.1.25\conf\web.xml已设置好默认的字符集编码为utf-8,如果所示:
所以使用tomcat9以及之前的版本,可以手动编写过滤器来处理中文乱码:
- 首先编写实现Filter接口的实现类
package com.powernode.springmvc.filter;
import jakarta.servlet.*;
import java.io.IOException;
public class CharacterEncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//设置请求体的字符集
request.setCharacterEncoding("utf-8");
//设置响应体的字符集
response.setCharacterEncoding("utf-8");
//执行下一步
chain.doFilter(request,response);
}
}
- 然后在web.xml中,定义过滤器的名称等
<!--配置字符编码过滤器-->
<filter>
<!-- 定义过滤器的名称,这个名字是唯一的,并且在整个web.xml文件中被引用 -->
<filter-name>characterEncodingFilter</filter-name>
<!-- 定义过滤器的全类名,即这个过滤器实现类的完整路径 -->
<filter-class>com.powernode.springmvc.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样提交post中含有中文就不会乱码了.
标签:Filter,utf,request,乱码,过滤器,post,response From: https://www.cnblogs.com/DuWenjie/p/18281355