今天弄mysql数据库,一开始是不能输入中文,输入了就提示data too long ,然后设置了一下字符集,就像这样,create XX
{
}
ENGINE=InnoDB DEFAULT CHARSET=utf8 ;    
好了,现在可以输入中文了,但是一点保存,怎么就变成??了呢,我在网上看帖子,有人让我输入这个命令
show variables like '%char%';
显示如下:
character_set_client utf8
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir D:\\MySQL\\MySQL Server 5.0\\share\\charsets\\怎么还有那么多latin1呢?应该怎么做?我已经改了my.ini 的utf8了

解决方案 »

  1.   

    修改后重新启动MYSQL没有?
    运行 SET NAMES UTF8 试试
      

  2.   

    谢谢你,现在mysql好了,直接在里面可以输入中文数据了,但是如果利用网页来提交数据到数据库的话,中文还是乱码,我是用Hibernate做的,我调试了一下,发现运行到
     session=HibernateSessionFactory.getSession();
     tx=session.beginTransaction();
     session.save(user);
     tx.commit();
    变量栏里面的数据一直都是中文的,那是不是说明在提交的过程中没有问题,只是在存入数据库的时候出了问题?我该怎么解决?
      

  3.   

    找到mysql的根目录 下面有个my.ini 
    将default-character-set=latin1 将latin 
    改为gb2312(注意两处), 
    修改后一定重启mysql,还要删掉以前的数据库 重新建库,mysql就不会出现乱码 
      

  4.   

    建议不要在my.ini文件里该,这样容易出错,比较保险的方式就是:开始----程序----MySQL---- Mysql Server5.0-------MySQL Server Instance Config Wizard进去一直下一步,在到选字符编码格式的时候就选utf8就搞定了
      

  5.   

    修改my.ini
    下面是我的其中一部分:
    [mysql]
    no-beep
    default-character-set=gb2312
    # SERVER SECTION
    # ----------------------------------------------------------------------
    #
    # The following options will be read by the MySQL Server. Make sure that
    # you have installed the server correctly (see above) so it reads this 
    # file.
    #
    [mysqld]# The TCP/IP Port the MySQL Server will listen on
    port=3306
    #Path to installation directory. All paths are usually resolved relative to this.
    basedir="C:/Program Files/MySQL/MySQL Server 5.0/"#Path to the database root
    datadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/"# The default character set that will be used when a new schema or table is
    # created and no character set is defined
    default-character-set=utf8# The default storage engine that will be used when create new tables when
    default-storage-engine=INNODB# Set the SQL mode to strict
    #sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
      

  6.   


    网页HTML的语言是什么啊,查看一下,设置成UTF-8吧
      

  7.   

    影响中文形成乱码无非就是:
     1.MYSQL建库问题,对字段设置是不是GBK或GB2312或UIF-8的,决对不能是默认值latin1。建库,表,字段都得注意到!!
     2.JSP页面的把ISO-8859-1改成GB2312
     3.在Hibernate里接收或传到页面的时候也得改成"GB2312"。REQUEST和RESPONSE。这样就没有问题了!我以前遇到过比较愈闷的乱码问题:
      1.MYSQL建库的问题
         2.在SERVLET里传值时没有写Response.SENCHAR("GB3212");
        3.在JSP页面的部局差生错误时也会影响到输出数据!!
    你自己检查一下看是哪一环节出了问题吧!然后就着重解决!如果MYSQL没有问题。那你就调试你的程序,看报什么样的错误!望成功!!