SQLyogv11.24查询MySQL5.6.24中文乱码的解决方法

2015-07-24 06:09:01 · 作者: · 浏览: 1

本问题在网上查找了半天,没有找到一个解决的方法,最后我自己使用了一个小技巧解决了。

这里写图片描述

解决方法,执行命令:

SET character_set_results = gbK;

这里写图片描述

详细可参考:
百度知道里的回答
这个回答中,

SET character_set_client = gbK; SET character_set_results = gbK; SET character_set_connection = utf8; 

或者

SET character_set_client = utf8; SET character_set_results = gb2312; SET character_set_connection = utf8;

都是可以尝试的。但实际我只设置results为gbk即可。而且第二部分说的什么设置Font,在我的新版本里根本没有这个设置。

这样设置确实不乱码了,但是重启SQLyog又不生效了。

网上又说设置一下服务端的my.cnf配置文件里的character-set-server参数或者default参数,我看我的服务器本来就设置了gbk。

[aipaas@aipaas03 /app]$more my.cnf [mysqld_multi] mysqld = /app/mysql/bin/mysqld_safe mysqladmin = /app/mysql/bin/mysqladmin user = mysql password = aiLk@Aug [mysqld020] port = 3020 socket = /tmp/mysql.sock01 pid-file = /app/data_01/db-app.pid basedir = /app/mysql datadir = /app/data_01 user = mysql symbolic-links=0 character-set-server=gbk ndbcluster ndb-connectstring=130.51.23.24 explicit_defaults_for_timestamp optimizer_switch=engine_condition_pushdown=off

而我通过主机上的mysql客户端命令行,字符集是没有问题的:

MySQL [portaldb]> SHOW VARIABLES LIKE 'char%' -> ; +--------------------------+--------------------------------------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------------------------------------+ | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | gbk | | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | gbk | | character_set_system | utf8 | | character_sets_dir | /app/mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64/share/charsets/ | +--------------------------+--------------------------------------------------------------------+ 8 rows in set (0.00 sec)

这个说明,同样的服务端,不同的客户端是可能会产生不同的字符集,因为我觉得应该有在客户端修改字符集的方法。
sqlyog的字符集(与上面命令行客户端的明显不同):
这里写图片描述

此时,公司的DBA叫我建表时也必须使用gbk。我觉得不靠谱。首先,为什么强制了建表必须gbk?其次,我在命令行里都没有乱码,只是在SQLyog里乱码,我认为不是建表字符集的问题。
这里写图片描述

SHOW CREATE TABLE sys_config; Table Create Table ---------- -------------- sys_config CREATE TABLE `sys_config` ( `id` int(11) NOT NULL AUTO_INCREMENT, `type_code` varchar(30) COLLATE utf8_bin DEFAULT NULL, `param_code` varchar(30) COLLATE utf8_bin DEFAULT NULL, `service_value` varchar(20) COLLATE utf8_bin DEFAULT NULL, `service_option` varchar(255) COLLATE utf8_bin DEFAULT NULL, `descb` varchar(255) COLLATE utf8_bin DEFAULT NULL, `state` varchar(2) COLLATE utf8_bin DEFAULT '1', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8 COLLATE=utf8_bin 

我想了一下,只要在登录数据库的时候,默认先执行一下这条命令就可以了:
这里写图片描述

问题完美解决。