SecureCRT 下MySQL中文亂碼問題終極解決方案

pythontab發表於2015-10-28

一、檢視Linux主機系統字符集

命令: echo $LANG

[root@pythontab.com ~]# echo $LANG

[root@pythontab.com ~]# en_US.UTF-8

檢視是不是en_US,如果不是則可按照下面的方法修改:

1、直接設定變數的方式修改,命令如下兩條命令:

[root@pythontab.com ~]# export  LANG=en_US.UTF-8; 

[root@pythontab.com ~]# export  LC_ALL=en_US.UTF-8;

2、修改檔案方式,透過修改/etc/sysconfig/i18n檔案控制

[root@pythontab.com ~]# vim /etc/sysconfig/i18n

LANG="en_US.UTF-8"  #即為系統的語言,修改該項即可

修改檔案儲存退出之後要生效要執行如下命令才可生效

[root@pythontab.com ~]$ source /etc/sysconfig/i18n


注意:上面的en_US.UTF-8是我的伺服器的配置,如果你的是en_US,那也沒有關係,不影響後面的操作,也不影響正常顯示中文。

二、更改ssh客戶端預設顯示字符集

ssh客戶端character encoding預設設定為default,只要改成指定UTF-8即可在終端上顯示中文。

這裡指的是一般檔案裡面的中文是可以正常顯示的,但是mysql裡面的中文就不一定了,如果沒有正常顯示,請繼續往下看,跟隨下面的步驟操作。

SecureCRT設定:(在開啟會話以後可以直接設定會話選頂)選項(Options)->會話選項(Session Options)->外觀(Appearance)->字元(character encoding),選擇UTF-8 。

這樣就設定了預設顯示字符集。

三、檢視mysql的字符集設定

檢視mysql server字符集系統變數:

mysql>show variables like 'character_%';

mysql>show variables like 'collation%';

最終客戶端連線的字符集是由客戶端連線時指定的

連線時指定字符集命令:

mysql --default-character-set=utf8


如果不想每次連線資料庫都指定連線字符集,就需要在配置檔案指定字符集,但是更改配置檔案後需重啟服務才會生效。

編輯 /etc/my.cnf, 修改下列配置項

[client]

set character_set_results=utf8

[mysql]

set character_set_results=utf8


總結: 如果想要ssh客戶端(SecureCRT等)mysql中文顯示不亂碼,就要保證 Linux系統字符集、ssh客戶端顯示字符集、mysql客戶端連線字符集一致!


相關文章