mysql不识别某些字的问题
像“喆”,“槃”这些字就不行,上网查了,也大概知道是字符编码的问题有个数据库中的table是picture,中有个列是introduce  我在本机调试,用ALTER TABLE picture CHANGE introduce introduce VARCHAR( 400 ) CHARACTER SET gb2312 COLLATE gb2312_bin NULL DEFAULT NULL;语句执行成功了,而且可以插入“喆”,“槃”这2个字...
  但是我在另一台机子上调试,就不可以,同样的数据库,同样的语句,都是ALTER TABLE picture CHANGE introduce introduce VARCHAR( 400 ) CHARACTER SET gb2312 COLLATE gb2312_bin NULL DEFAULT NULL;虽然这个语句执行成功,改为了gb2312编码,但是却不能成功插入“喆”,“槃”这2个字.....两台机子的mysql的配置文件my.ini都一样,其中default-character-set=gb2312;都是这样的我也试过用其他的编码,像utf8,latin1等等,都不行,虽然ALTER TABLE picture CHANGE introduce introduce VARCHAR( 400 ) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL;都执行成功,但就是不能插入“喆”,“槃”这2个字...我就很奇怪了,同样的数据库,同样的语句,为啥结果就不一样了...请各位大虾帮帮忙...已经研究了一个晚上,还是没有结果...

解决方案 »

  1.   

    默认字符集ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=gb2312;是gb2312没错呀...
      

  2.   


    怎么看有没有装gb2312字库?  看phpinfo中都没有,我在数据库操作前又加了一句set names gb2312;还是不行....
      

  3.   

    这2个字不是gb2312字符集,设为gb2312肯定无法包含它们
    该字段字符集必须设为gbk, utf8才能存他们。并且客户端的字符集也要设为gbk , set names gbk按以上方法,就OK了。
      

  4.   

    汉字集的集合关系
    gb18030 > gbk > gb2312提示:能用智能拼音输入的都为gb2312, 输不进去的,肯定不在gb2312字符集里。在mysql中
    字段字符集 优先于 表字符集 优先于  数据库字符集  优先于  默认字符集设置以上字符集 只能确保 数据库能存储该字符集如果要正确的输入和显示, 必须设置正确的连接字符集 ,所以set names xxx要设置正确。在mysql, 即使存储字符集无法包含该字,插入也不会提示错误,只是把这些字忽略了。
      

  5.   


    依然不行,我在服务器上设置set names gbk还是不行...
    不知道在客户端的字符集也要设置成GBK,是什么意思?怎么操作的?
      

  6.   

    mysql> select '喆';
    +----+
    | 喆 |
    +----+
    | 喆 |
    +----+
    1 row in set (0.00 sec)
    mysql> insert into t1 values ('喆');
    Query OK, 1 row affected (0.08 sec)mysql> select * from t1;
    +------+
    | f    |
    +------+
    | aa   |
    | 中文 |
    | 喆   |
    +------+
    3 rows in set (0.00 sec)mysql> show create table t1;
    +-------+-------------------------------------------------------------------------------------------+
    | Table | Create Table                    |
    +-------+-------------------------------------------------------------------------------------------+
    | t1    | CREATE TABLE `t1` (  `f` varchar(30) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +-------+-------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)mysql> show variables like 'char%';
    +--------------------------+---------------------------------------------------------+
    | Variable_name            | Value     |
    +--------------------------+---------------------------------------------------------+
    | character_set_client     | latin1     |
    | character_set_connection | latin1     |
    | character_set_database   | latin1     |
    | character_set_filesystem | binary     |
    | character_set_results    | latin1     |
    | character_set_server     | latin1     |
    | character_set_system     | utf8     |
    | character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.1\share\charsets\ |
    +--------------------------+---------------------------------------------------------+
    8 rows in set (0.00 sec)mysql>
    按照上述方法检查一下你的表,对话的字符集设置和变量。
      

  7.   

    楼主用的是什么工具 录入的?
    有些是这工具的问题.你在dos下用mysql录入吧, 最能说明问题.
      

  8.   

    用UTF8,并且把所有的字符字段设置为UTF8,看看可不可以