相信很多小伙伴在使用JDBC插入中文到MySQL中都遇到过中文乱码的问题,大部人人在网上查询一些办法都能够解决,比如说:
1.mysql的url这样写:String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8"
2.mysql字符集的设置:set character_set_database="utf8"
......
但有一部分却还是无法解决这个问题,这些人不妨试一下我的这个方法:
建立一个过滤器:
import javax.servlet.*;
import java.io.IOException;
public class EncodingFilter implements Filter {
private String encoding = "UTF-8";
@Override
public void init(FilterConfig filterConfig) throws ServletException {
if(filterConfig.getInitParameter("encoding") != null) {
encoding = filterConfig.getInitParameter("encoding");
}
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding(encoding);
servletResponse.setCharacterEncoding(encoding);
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
encoding = null;
}
}
web.xml配置
<!--配置字符编码过滤器-->
<filter>
<filter-name>Encoding</filter-name>
<filter-class>EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>