mysql中的存储中文的问题解决方法
前些时候的做过一个实训是关于mvc的一个网站,其中遇到了很多问题因为时间的原因,把这些问题给省略掉了,最近又碰到了这些问题,这次无论怎样都要把问题解决掉一个是mysql存储中文的问题(在库中显示的是????),我相信大部分人的问题应该都是这样子的....
现在我把我的解决方法总结一下(当人也是从网上看一些大侠们的方法,加上自己的感想,如有雷同,敬请谅解)。
第一,编码的问题是首当其冲要解决的,我个人的用的是utf-8的(gbk的没有试过)。
先要把你的mysql的编码设置为UTF-8。
如果想方便的话可以在mysql的根目录下找到 my.ini 陪置文件,把[mysql] default-character-set=编码。中的编码改成utf8(注意是utf8不是utf-8)。
第二,然后在连接数据库的时候,代码后面加上useUnicode=true&characterEncoding=utf-8,格式为
DriverManager.getConnection( "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf-8",user,password);这样做的目的是连接数据的时候都是采用utf-8的形式。
第三,设置过滤器。
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
publicclassSetCharacterEncodingFilterimplementsFilter {
protectedString encoding =null;
protectedFilterConfig filterConfig =null;
publicvoidinit(FilterConfig filterConfig)throwsServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
publicvoiddoFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throwsIOException, ServletException {
request.setCharacterEncoding("UTF-8");
System.out.println("执行");
chain.doFilter(request, response);
}
publicvoiddestroy() {
this.encoding =null;
this.filterConfig =null;
}
protectedString selectEncoding(ServletRequest request) {
return(this.encoding);
}
}
然后就是在web。xml文件中配置(现在的tomcat版本,可以自动检查是够更新,所以不用重启,稍等片刻就可以了)
Set Character Encoding
com.bean.SetCharacterEncodingFilter
encoding
UTF-8
Set Character Encoding
/*
如果还不能解决的,你可以给我留言,咱们共同解决,如果有什么不对的地方,请各位指出,咱们共同探讨....