MySQL 查询分析器乱码问题分析和解决方法

mysql 5.5 提供了以下几个设置字符集的系统变量:
character_set_client                客户端字符集
character_set_connection       客户端与服务器端连接采用的字符集
character_set_results SELECT  查询返回数据的字符集
character_set_database          数据库采用的字符集

如果数据库用的是utf8的字符集,那么
character_set_database,
character_set_client,
character_set_connection,
character_set_results, 都是utf8的字符集
而你的控制台/客户端/程序也许采用的并不是utf8,比如你的控制台/客户端/程序用的是gbk,
那么character_set_results 返回数据的字符集utf8 和 你的 控制台/客户端/程序 的字符集gbk不一样,就会出现乱码问题
这时你应该将character_set_results 返回数据的字符集和你的控制台/客户端/程序的字符集一致,乱码问题就解决了。
最简单的方法是使用 set names gbk,即可解决。

控制台使用 insert into table values(); 出现
错误:ERROR 1366 (HY000): Incorrect string value: '\xD6\xDC\xCE\xE5' for column 'name' at row 1
设置 set character_set_client = gbk;  可以解决

控制台使用 select * from table; 出现乱码
设置 set character_set_results = gbk;可以解决

因为 set names gbk 等同于
set character_set_client = gbk;
set character_set_connection = gbk;
set character_set_results = gbk;
所以可以解决乱码问题