在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再进行比对,理应返回空结果,为什么说不匹配呢?求解