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

本问题在网上查找了半天,没有找到一个解决办法,最后我本身使用了一个小技巧攻克了。html

转载请标明出处:
http://blog.csdn.net/ouyida3/article/details/46606689
本文出自:【ouyida3的博客mysql

这里写图片描写叙述

解决方法,运行命令:linux

SET character_set_results = gbK;

这里写图片描写叙述

具体可參考:
百度知道里的回答
这个回答中,sql

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就能够。ruby

而且第二部分说的什么设置Font,在个人新版本号里根本没有这个设置。服务器

这样设置确实不乱码了。但是从新启动SQLyog又不生效了。markdown

网上又说设置一下服务端的my.cnf配置文件中的character-set-server參数或者default參数,我看个人服务器原本就设置了gbk。app

[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客户端命令行。字符集是没有问题的:socket

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 

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

问题完美解决。

个人參考连接:

2015.6.23

相关文章
相关标签/搜索