本問題在網上查找了半天,沒有找到一個解決辦法,最後我本身使用了一個小技巧攻克了。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