关于编写过滤器时遇到的Illegalmixofcollations(gb2312_chinese_ci,IMPLICIT)and(gbk_chinese_ci,IMPLICIT)foroperation’=’ 的错误解决方式
自己在编写过滤器时有遇到Illegalmixofcollations(gb2312_chinese_ci,IMPLICIT)and(gbk_chinese_ci,IMPLICIT)foroperation’=’ 这个问题,自己在CSDN上没有找到相应的解决方式,后来经过自己的摸索后找到了解决的方式,在这里与大家分享下,希望能帮到大家。
自己过滤器的代码部分:
/**
-
过滤器
*/
public class filter implements Filter {/**
- Default constructor.
*/
public filter() {
// TODO Auto-generated constructor stub
}
/**
- @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
-
@see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
((HttpServletRequest)request).setCharacterEncoding(“utf-8”);//请求参数编码转换
((HttpServletResponse)response).setContentType(“text/html;charset=utf-8”); //响应参数的编码转换chain.doFilter(request, response);
}
/**
- @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
- Default constructor.
}
我的过滤器是用来处理登录时遇到的中文乱码问题的,所以在登录的jsp页面的方法需要改为post(因为我写的过滤器只适用于post)。
之后需要将数据库的编码格式修改,我使用的是Navicat,将字符集改为utf-8就可以解决问题了,不会报错,中文也不会有乱码了。