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

 

 

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

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

通常須要看這麼幾個地方(附修改命令):shell

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

1
命令一、show variables  like  'character_set_database' ;<br>

  

 

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

 

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

 

固然也有更全面的數據庫

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

 

複製代碼
character_set_client 爲客戶端編碼方式;

character_set_connection 爲創建鏈接使用的編碼;

character_set_database 數據庫的編碼;

character_set_results 結果集的編碼;

character_set_server 數據庫服務器的編碼;
複製代碼

修改:服務器

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

 

二、數據庫表的編碼

show create table  表名;

 

修改:post

alter table <表名> character set utf8;

 

三、數據庫表字段的編碼

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; 

 

四、看鏈接數據庫鏈接時的編碼

 參考 1.3 / 1.4 便可spa

最多見的是(相似的思路)3d

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

終極大招:

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

若是以上的方法都沒有解決亂碼問題,那麼你就每次在查庫以前先執行一下下面這條強大的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,轉化過程就爲不可逆的,破壞性的。

相關文章
相關標籤/搜索