中文乱码处理
2023年11月15日大约 2 分钟约 385 字
自定义中文乱码过滤器
当表单提交数据为中文时,会出现乱码,我们来解决一下(提示:先恢复 name 属性的绑定)


创建过滤器 MyCharacterFilter.java
package com.lzw.web.filter;
import javax.servlet.*;
import java.io.IOException;
/**
* @author LiAng
* 编写过滤器,处理中文乱码
*/
public class MyCharacterFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//这里加入对编码的处理
servletRequest.setCharacterEncoding("utf-8");
//放行请求,这个规则和前面java web的过滤器一样
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
}
}
修改 web.xml
<!--配置处理中文乱码的过滤器
拦截所有请求,把过滤器配置到web.xml前面
-->
<filter>
<filter-name>myCharacterFilter</filter-name>
<filter-class>com.lzw.web.filter.MyCharacterFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myCharacterFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
完成测试


Spring 提供的过滤器处理中文
修改 web.xml
<!--配置处理中文乱码的过滤器
拦截所有请求,把过滤器配置到web.xml前面
-->
<!--<filter>-->
<!-- <filter-name>myCharacterFilter</filter-name>-->
<!-- <filter-class>com.lzw.web.filter.MyCharacterFilter</filter-class>-->
<!--</filter>-->
<!--<filter-mapping>-->
<!-- <filter-name>myCharacterFilter</filter-name>-->
<!-- <url-pattern>/*</url-pattern>-->
<!--</filter-mapping>-->
<!--配置spring提供的过滤器,解决中文乱码问题-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
完成测试
