具体情况:
    mysql建数据库db1时,采用了默认的字符集latin1,然后插入了一些中文字符。
    现在用ssh框架,从数据库里查出来的中文字符就是乱码。求解决方法:
    1,在不改动默认字符集latin1的情况下,解决乱码。
    2,或者,把latin1的改成utf8,但要求字符集改变后,里面的中文字符,不变成乱码

解决方案 »

  1.   

    改mysql客户端的字符集(记得mysql      server client 端都可以设字符,),试一试,不过不知道能不能行 ,
    改成utf8  ,你可以把原来的数据备份一下,改成utf8后,再导入 
      

  2.   

    set character_set_client=utf8;
    set character_set_connection=utf8;
    set character_set_database=utf8;
    set character_set_server=utf8;
    用这种方式,只是暂时改变mysql的编码,
    下次启动又变成latin1了
      

  3.   

    如果表还么建 CREATE TABLE testme (   
    ID varchar(32) NOT NULL,   
    NAME varcar(100)   
    ENGINE=InnoDB DEFAULT CHARSET=utf8 已经建好的话
    加一个过滤器试下吧 
    1.建一个类: 
    package org.jb.common.filter; import javax.servlet.Filter; 
    import javax.servlet.FilterConfig; 
    import javax.servlet.ServletException; 
    import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; 
    import javax.servlet.FilterChain; 
    import java.io.IOException; public class SetCharacterEncodingFilter implements Filter {   protected FilterConfig filterConfig; 
      protected String encodingName; 
      protected boolean enable;   public SetCharacterEncodingFilter() { 
        this.encodingName = "GBK"; 
        this.enable = false; 
      }   public void init(FilterConfig filterConfig) throws ServletException { 
        this.filterConfig = filterConfig; 
      }   public void doFilter(ServletRequest request, 
                           ServletResponse response, 
                           FilterChain chain) 
                        throws IOException, ServletException { 
        request.setCharacterEncoding("GBK"); 
        chain.doFilter(request, response); 
      }   public void destroy() { 
      } 
    } 2.web.xml配置加 
      <filter> 
        <filter-name>encodefilter</filter-name> 
        <filter-class>org.jb.common.filter.SetCharacterEncodingFilter</filter-class> 
      </filter> 
      <filter-mapping> 
        <filter-name>encodefilter</filter-name> 
        <url-pattern>/*</url-pattern> 
      </filter-mapping> 
      

  4.   

    估计没办法了,自己写个common method,转换下吧
      

  5.   

    1,用SQLDUMP命令,把数据库DUMP成.SQL文件.
    2,使用字符集转换工具把.SQL文件转换成UTF8字符集.
    3,用UTF8字符集重新建立数据库.
    4,把转换好的.SQL文件IMPORT到新数据库里面.
      

  6.   

    有现成的命令 讲mysql里面的字符集改成utf8的 为什么不用呢!
      

  7.   

    我以前出现查询或是插入中文乱码,解决方法。你可以试一试。
    1.在配置文件中,如   c:\winnt\my.ini   中的   [mysqld]   里添加一行:     
      default-character-set=utf8    
    2.连接字符串里,的编码。
    String strURL = "jdbc:mysql://localhost:3306/hikdb?useUnicode=true&amp;characterEncoding=utf-8";
    3.数据库表编码。
    例如:
    CREATE TABLE  `hikdb`.`tb_region` (
      `nLsh` int(10) unsigned NOT NULL auto_increment,
      `ParentID` int(10) unsigned NOT NULL,
      `Name` varchar(64) NOT NULL,
      `OrderTime` datetime NOT NULL,
      PRIMARY KEY  (`nLsh`)
    ENGINE = innodb DEFAULT CHARACTER SET utf8;试下这三种方式,不行,就不知道了。
      

  8.   

    1,my.ini文件 中 定义字符集。或者试一下新建一张表,insert 一条数据 select 数据
       是否是 乱码,如果是 应该是mysql 的字符集问题。
       可以在见表的最后加上ENGINE=InnoDB DEFAULT CHARSET=latin1 试试看看,
    2,上一步如果查出不是乱码,你插入一条数据到你的目标表中(如果数据重要,请先做好备份),
       查看这条数据是否是乱码。如果是同上方法在最后加上ENGINE=InnoDB DEFAULT CHARSET=latin1 
       试试看看,
    3,如果不是乱码,那么基本排除是数据库出现乱码导致数据问题。4,写一个java 测试类。连接数据库。提取数据查看是否是乱码。如果还是乱码,可以判断了还是
       数据库的问题。如果不是。在连接到一个web。查看是不是乱码。是乱码,在用 过滤器  来处理。
       
      

  9.   

    三楼的falter好使 楼主用用 绝对好是 我以前遇到过 写完就好使 
    祝楼主成功 !!!!!!!!!!!
      

  10.   

    这个可以使用一下,也可以修改安装mysql时候的选择字节码那里