天天看点

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

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

转载请标明出处:

http://blog.csdn.net/ouyida3/article/details/46606689

本文出自:【ouyida3的博客】

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

解决方法,执行命令:

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

详细可参考:

百度知道里的回答

这个回答中,

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

[mysqld02]
port = 
socket = /tmp/mysql.sock01
pid-file = /app/data_01/db-app.pid
basedir = /app/mysql
datadir = /app/data_01
user = mysql
symbolic-links=
character-set-server=gbk
ndbcluster
ndb-connectstring=.
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的字符集(与上面命令行客户端的明显不同):

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

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

SQLyog v11.24查询MySQL5.6.24中文乱码的解决方法
SHOW CREATE TABLE sys_config;

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

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

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

问题完美解决。

我的参考链接:

  • 关于MySQL如何修改character_set_client的编码问题
  • http://blog.csdn.net/ACMAIN_CHM/article/details/4174186
  • http://www.itpub.net/thread-1806655-1-1.html

2015.6.23

继续阅读