使用源码安装,参数是
./configure --prefix=/mysql --with-unix-socket-path=/mysql/mysql.sock --localstatedir=/database/mysql/data --with-charset=gbk --with-extra-charsets=all安装成功后,在securecrt中使用mysql命令登录,报错
mysql: Character set 'gbk' is not a compiled character set and is not specified in the '/mysql/data/mysql/charsets/Index.xml' file修改 my.cnf 文件
在[client]下面加入
default-character-set=utf8这样就可以使用mysql登录,但是查询有中文字符的表,显示乱码.执行show variables like 'char%';
显示
+--------------------------+------------------------------+
| Variable_name            | Value                        |
+--------------------------+------------------------------+
| character_set_client     | utf8                         |
| character_set_connection | utf8                         |
| character_set_database   | gbk                          |
| character_set_filesystem | binary                       |
| character_set_results    | utf8                         |
| character_set_server     | gbk                          |
| character_set_system     | utf8                         |
| character_sets_dir       | /mysql/share/mysql/charsets/ |
+--------------------------+------------------------------+
执行set character_set_results=gbk;后,可以显示表中的中文字符了,但是查询时select * from t where cname like '中%';报错
ERROR 1267 (HY000): Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'
执行set character_set_client=gbk;后,可以正常查询现在想问的是为什么默认gbk时,使用mysql会报错?用上面的方面麻烦的地方是,每次用mysql登录进去后,都要执行一下
mysql> set character_set_results=gbk; set character_set_client=gbk;
很麻烦,请高手指教!

解决方案 »

  1.   

    show variables like 'char%';的结果只提到了把server端设置为gbk,而client端没有找到对应的字符集,所以会报错。
    看看表的数据库和表的字符集都是什么?在[client]下面加入
    default-character-set=utf8 
    把服务端的也设置为utf8 
    [mysqld]
    loose-default-character-set=utf8呵呵,只是建议啊,学习中
      

  2.   

    set names gbk;
    可以同时把character_set_client,character_set_results,character_set_connection设置成gbk。
    不想每次都设置编码的话可以在my.cnf文件的[client]节点中添加default_character_set=gbk
      

  3.   

    原因:
    你的客户端窗口缺省输入字符集是gbk,但是你客户端连接字符集是utf8,这样mysql就把gbk当成utf8来处理,自然是乱码。解决办法:
    方法一:
    在[client]下面加入
    default-character-set=gbk
    方法二:
    每次登陆时执行set names 'gbk';
      

  4.   

    windows 的命令行下对UTF8的显示并不理想,虽然可以通过 chcp 切换到code 65001 下,但对MYSQL的显示仍不正常。所以你需要用 set names gbk 来通知MYSQL,你的客户端支持的是GBK,这样MYSQL会自动将UTF8转换成GBK后再发送给你的客户端。改你的在[client]下面加入
    default-character-set=gbk善于字符集的解释,你可以参考下贴。
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码