Xshell連接mysql數據庫亂碼問題解決思路總結


亂碼問題一直是一件讓人頭疼的事情,亂碼就是編碼格式不統一產生的,下面將一些常見的解決思路整理:

先Xshell連接上數據庫,查看數據的編碼格式:

一般需要看這么幾個地方(附修改命令):

1、數據庫的編碼(4種方式視情況而定)

 命令1、show variables like 'character_set_database';

  

 

命令2、show create database 數據庫名;

 

命令3、show variables like 'collation%';

 

當然也有更全面的

命令4、show variables like '%char%';

 

character_set_client 為客戶端編碼方式;

character_set_connection 為建立連接使用的編碼;

character_set_database 數據庫的編碼;

character_set_results 結果集的編碼;

character_set_server 數據庫服務器的編碼;

修改:

alter database <數據庫名> character set utf8;

 

2、數據庫表的編碼

show create table  表名;

 

修改:

alter table <表名> character set utf8;

 

3、數據庫表字段的編碼

SHOW FULL COLUMNS FROM 表名;

修改:

mysql>alter table <表名> change <字段名> <字段名> <類型> character set utf8;

mysql>alter table user change username username varchar(20) character set utf8 not null;

mysql>ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci; 

 

4、看連接數據庫連接時的編碼

 參考 1.3 / 1.4 即可

最常見的是(類似的思路)

jdbc:mysql://localhost:3306/Laptop?useUnicode=true&characterEncoding=GBK(編碼格式)

終極大招:

MySql默認編碼是Latin1,不支持中文,要想修改默認編碼,需要修改my.ini文件

如果以上的方法都沒有解決亂碼問題,那么你就每次在查庫之前先執行一下下面這條強大的sql語句,然后再進行查庫,一般是不會再出現問題了,

但這里要聲明一點,“SET NAMES UTF8”作用只是臨時的,MySQL重啟后就恢復默認了。

set names ‘utf8’;

原理:

set names utf8 是用於設置編碼,可以再在建數據庫的時候設置,也可以在創建表的時候設置,或只是對部分字段進行設置,而且在設置編碼的時候,
這些地方最好是一致的,這樣能最大程度上避免數據記錄出現亂碼。 執行SET NAMES utf8的效果等同於同時設定如下:
SET character_set_client='utf8'; SET character_set_connection='utf8'; SET character_set_results='utf8';

看看這3個變量的作用:
信息輸入路徑:client→connection→server;
信息輸出路徑:server→connection→results。
換句話說,每個路徑要經過3次改變字符集編碼。以出現亂碼的輸出為例,server里utf8的數據,傳入connection轉為latin1,傳入results轉為latin1,utf-8頁面又把results轉過來。如果兩種字符集不兼容,比如latin1和utf8,轉化過程就為不可逆的,破壞性的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM