在Fedora 环境下,MySQL版本为5.5
在库中新建了一个表test使用默认的utf8字符集:create table test(name char(10));
然后我插入一条数据"中文":insert into test(name)
values('中文');然后我用set names gbk;将客户端的字符集声明为gbk(其实客户端的编码为utf8),这样以后我从客户端执行查询语句的时候select * from test
where name = '中文';我觉得是会返回空结果的,因为字符编码被强行当做gbk转变了。但是mysql告诉我说这个语句是非法的,因为校对规则不匹配:我不太能理解,在客户端输入的utf8码的'中文'被当做gbk编码发送到了connection(gbk),然后connection将该字符编码转为了表的编码utf8再进行比对,理应返回空结果,为什么说不匹配呢?求解

解决方案 »

  1.   

    show variables like 'char%';
    show create table test;贴出以供分析。
      

  2.   

    show create table test;已经贴出~ 在上面,环境变量补充贴在最后
      

  3.   

    字符编码不同统一由gbk,还有utf8.
    show  variables like '%char%';
    show create table test;
      

  4.   

    如果客户端的确是gbk编码,那必须不统一呀。