解决Mysql5.0数据库中文乱码三个步骤2009年6月26日星期五 在系统中用到了mysql数据库,开发语言java。在系统中遇到了中文乱码问题。mysql把它的默认编码变成了latinl字符集了。现在让我们看看自己的数据库的各个部分的编码:进入命令行;SHOW VARIABLES LIKE 'character_set_%';可以查看数据库编码。这是我改后的数据库编码,没改的里面有部分是latin1的字符编码。如果没有改变的话它会是latinl的而不是utf8的。这是为什么呢?(1)、首先把你的jsp页面编码改成UTF-8的。A、B、在Hibernate.cfg.xml中的连接字符串中加上 【?useUnicode=true&characterEncoding=utf8】例如:jdbc:mysql://localhost:3306/online?useUnicode=true&characterEncoding=utf8C、打开mysql的安装目录,我的在:C:/Program Files/MySQL/MySQL Server 5.0打开:my.ini文件修改里面的默认编码:default-character-set=latinl 为default-character-set=gbk,一共有两处。必须重新启动mysql。注意:如果之前用latin1把数据库导出为SQL语句的话,需要的那个mysql.sql文件中将所有的的latin1改为数据库默认的编码,也就是我们刚改的gbk.(3)、然后加上过滤器,过滤器的代码如下:package com.online.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class SetCharacterEncodingFilter implements Filter {protected String encoding = null;protected FilterConfig filterConfig = null;protected boolean ignore = true;public void init(FilterConfig filterConfig) throws ServletException{this.filterConfig = filterConfig;this.encoding = filterConfig.getInitParameter("encoding");String value = filterConfig.getInitParameter("ignore");if (value == null){this.ignore = true;}else if (value.equalsIgnoreCase("true")){this.ignore = true;}else if (value.equalsIgnoreCase("yes")){this.ignore = true;}else{this.ignore = false;}}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException{if (ignore || (request.getCharacterEncoding() == null)){String encoding = selectEncoding(request);if (encoding != null)request.setCharacterEncoding(encoding);}chain.doFilter(request, response);}public void destroy(){this.encoding = null;this.filterConfig = null;}protected String selectEncoding(ServletRequest request){return (this.encoding);}}(3)、在web.xml中的配置:Set Character Encodingcom.online.filter.SetCharacterEncodingFilterencodingUTF-8ignoretrueSet Character Encodingaction配置好以后别的什么处理乱码的工作都不用做了,个人认为是万能的。现在一切搞定。再不会有中文乱码了。