mysql查看資料庫的編碼格式
A. 如何更改Mysql資料庫編碼為UTF-8或者GB2312
mysql 創建 資料庫時指定編碼很重要,很多開發者都使用了默認編碼,亂碼問題可是防不勝防。制定資料庫的編碼可以很大程度上避免倒入導出帶來的亂碼問題。
網頁數據一般採用UTF8編碼,而資料庫默認為latin 。我們可以通過修改資料庫默認編碼方式為UTF8來減少資料庫創建時的設置,也能最大限度的避免因粗心造成的亂碼問題。
我們遵循的標準是,資料庫,表,欄位和頁面或文本的編碼要統一起來
我們可以通過命令查看資料庫當前編碼:
mysql> SHOW VARIABLES LIKE 'character%';
發現很多對應的都是latin1,我們的目標就是在下次使用此命令時latin1能被UTF8取代。
第一階段:
mysql設置編碼命令
[sql]view plain
SETcharacter_set_client=utf8;
SETcharacter_set_connection=utf8;
SETcharacter_set_database=utf8;
SETcharacter_set_results=utf8;
SETcharacter_set_server=utf8;
- 然後mysql> SHOW VARIABLES LIKE 'character%';你可以看到全變為utf8

mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:Program FilesMySQLMySQL Server 5.0sharecharsets |
+--------------------------+---------------------------------------------------------+
8 rows in set
B. mysql 怎麼查看當前編碼格式
第一步打開mysql軟體,輸入密碼,按下回車鍵,如下圖所示:
第二步在命令行先輸入"use day14_customer;",按回車鍵,進去資料庫,注意最後一個分號,day14_customer是資料庫名字,如下圖所示:
第三步再輸入「 show create database day14_customer;」,查看資料庫的編碼方式
4
第四步修改資料庫編碼信息,輸入「alter database day14_customer default character set gbk;」
C. 如何改變mysql資料庫的編碼方式
1. 查看MySQL資料庫的默認編碼
有如下兩種方式,
(1)使用status命令
mysql> status;
圖1 status命令
(2)使用show variables命令
mysql> show variables like 'char%';
圖2 show variables命令
如果要查看某個資料庫的編碼,在運行上面的命令前,應先執行use db_name;命令切換資料庫(db_name為要查看的資料庫名)。
2. 改變MySQL資料庫的默認編碼
安裝MySQL資料庫時的默認編碼是latin1,實際使用時可能要使用其他編碼。下文描述如何將默認編碼改為utf8:
首先修改MySQL的配置文件/etc/mysql/my.cnf:
在[client]下追加:
default-character-set=utf8
在[mysqld]下追加:
character-set-server=utf8
在[mysql]下追加:
default-character-set=utf8
修改完畢後,使用如下命令之一重啟mysql服務:
service mysql restart
/etc/init.d/mysql restart
改變後,之前手工創建的資料庫如未顯式指定編碼,則其編碼仍是默認的latin1,可使用如下命令更改編碼:
mysql> alter database db_name CHARACTER SET utf8;
參考資料:
[1] http://www.2cto.com/os/201404/292378.html
D. 怎麼查詢mysql 的表的字元編碼
需要以root用戶身份登陸才可以查看資料庫編碼方式(以root用戶身份登陸的命令為:>mysql -u root –p,之後兩次輸入root用戶的密碼),查看資料庫的編碼方式命令為:
>show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
從以上信息可知資料庫的編碼為latin1,需要修改為gbk或者是utf8;
E. 如何查看設置mysql資料庫編碼方式
打開第三方的資料庫管理軟體,找到需要查看編碼信息資料庫,右鍵點擊選中【更改資料庫】
F. 怎麼設置mysql資料庫編碼,如何查看mysql編碼
mysql查看資料庫編碼,mysql編碼
打開資料庫運行:show variables like 'char%';
根據自己需要改的編碼進行,set names (*)編碼 ;
G. 怎麼查看mysql默認編碼格式
查看MySQL編碼
SHOW VARIABLES LIKE 'char%';
因為當初安裝時指定了字元集為UTF8,所以所有的編碼都是UTF8。
character_set_client:你發送的數據必須與client指定的編碼一致!!!伺服器會使用該編碼來解讀客戶端發送過來的數據;
character_set_connection:通過該編碼與client一致!該編碼不會導致亂碼!當執行的是查詢語句時,客戶端發送過來的數據會先轉換成connection指定的編碼。但只要客戶端發送過來的數據與client指定的編碼一致,那麼轉換就不會出現問題;
character_set_database:資料庫默認編碼,在創建資料庫時,如果沒有指定編碼,那麼默認使用database編碼;
character_set_server:MySQL伺服器默認編碼;
character_set_results:響應的編碼,即查詢結果返回給客戶端的編碼。這說明客戶端必須使用result指定的編碼來解碼;
控制台編碼
修改character_set_client、character_set_results、character_set_connection為GBK,就不會出現亂碼了。但其實只需要修改character_set_client和character_set_results。
控制台的編碼只能是GBK,而不能修改為UTF8,這就出現一個問題。客戶端發送的數據是GBK,而character_set_client為UTF8,這就說明客戶端數據到了伺服器端後一定會出現亂碼。既然不能修改控制台的編碼,那麼只能修改character_set_client為GBK了。
伺服器發送給客戶端的數據編碼為character_set_result,它如果是UTF8,那麼控制台使用GBK解碼也一定會出現亂碼。因為無法修改控制台編碼,所以只能把character_set_result修改為GBK。
修改character_set_client變數:set character_set_client=gbk;
修改character_set_results變數:set character_set_results=gbk;
設置編碼只對當前連接有效,這說明每次登錄MySQL提示符後都要去修改這兩個編碼,但可以通過修改配置文件來處理這一問題:配置文件路徑:D:Program FilesMySQLMySQL Server 5.1 my.ini
H. 如何查看mysql資料庫字元集編碼
查看MySQL資料庫伺服器和資料庫MySQL字元集。
I. mysql資料庫表裡中文亂碼應該選哪種編碼
資料庫中關於字元集的種類有很多,個人建議,資料庫字元集盡量使用utf8(utf-8),以使你的數據能很順利的實現遷移,因為utf8字元集是目前最適合於實現多種不同字元集之間的轉換的字元集,盡管你在命令行工具上無法正確查看資料庫中的內容,我依然強烈建議使用utf8作為默認字元集.如果你想使用gb2312編碼,那麼建議你使用latin1作為數據表的默認字元集,這樣就能直接用中文在命令行工具中插入數據,並且可以直接顯示出來.而不要使用gb2312或者gbk等字元集,如果擔心查詢排序等問題,可以使用binary屬性約束 對編程有影響的主要是客戶端字元集和資料庫字元集(還有一個伺服器字元集,不知道干什麼用的), 資料庫中常用的操作就是保存數據和讀取數據,在這過程中,亂不亂碼和資料庫字元集貌似沒有什麼關系。我們只要保證寫入時選擇的字元集和讀取時選擇的字元集一致,即只需保證兩次操作的客戶端字元集一致即可。 x0dx0a在MySQL的客戶端上執行一次查詢的過程一般是,在客戶端的提示符後面輸入一條SQL語句,回車,然後終端顯示出查詢的結果。這個過程中,只有終端和三個MySQL的系統變數指定了正確的字元集,才能保證我們將一個正確的SQL語句送到伺服器,然後伺服器返回正確的結果,並且在終端正確顯示。 x0dx0a三個MySQL的系統變數是: x0dx0a1. character_set_client,終端字元集,告訴Server客戶端提交的SQL語句的編碼格式 x0dx0a2. character_set_connection,連接字元集,是伺服器翻譯SQL語句時用到的編碼格式 x0dx0a3. character_set_results,返回的結果集的字元集,是伺服器返回結果集之前把結果集轉換成的編碼格式 x0dx0a在MySQL終端通過執行命令 show variables like 『char%』 可以查看這幾個變數的值。這三個變數通常都設定為同一種字元集,用命令set names [charset name]就可以修改這三個變數的值。一般來說,只要你設定了能夠表示你的數據的字元集,你查詢的結果都可以在終端正確顯示。 x0dx0a舉個例子,使用的表t1是utf8編碼,表中的欄位c1繼承了這個編碼,表創建如下 x0dx0amysql> create table t1 ( c1 text not null ) character set utf8; x0dx0a用的字元是漢字「范」,gbk編碼為B7 B6,utf8編碼為E8 8C 83 x0dx0a用下面的SQL語句插入數據 x0dx0amysql> insert into t1 values( 『范』); x0dx0aa)如果終端設置為utf8,並且執行了 set names utf8,那麼插入到資料庫中的就是「范」這個字的utf8編碼,這個過程中MySQL不需要做編碼轉換。寫入資料庫的內容可以通過執行 select hex( c1 ) from t1 得到數據的十六進制編碼來驗證。 x0dx0ax0dx0ab)如果終端設置為 utf8,並且執行了set names gbk,那麼執行完這個插入操作後,寫入的二進制數據是E9 91 BC,這是「漢字「鑼」的utf8編碼。這是因為,終端輸入的「范」用的是utf8編碼,而伺服器以為終端發送過來的內容是gbk編碼,所以在向t1表中插入的時候進行了一次gbk到utf8的轉換,結果當然是錯誤的。 x0dx0ax0dx0ac)如果終端設置為gbk,並且執行了set names gbk,那麼執行完插入操作後,寫入t1的依然是「范」這個字的utf8編碼。插入過程中,終端輸入的是「范」的gbk編碼B7 B6,伺服器被告知終端發過來的SQL語句是gbk編碼(由character_set_client指定),所以在插入數據前做了一次gbk到utf8的編碼轉換。 x0dx0ax0dx0ad)如果終端設置為gbk,並且執行了set names utf8,那麼執行完插入操作後,MySQL會報出一個數據被截斷的警告。實際上,輸入終端的是「范」這個字元的gbk編碼B7 B6,而伺服器被告知客戶端發過來的SQL語句是utf8編碼,所以在執行過程中沒有做轉碼,直到插入數據的時候,發現B7 B6不符合utf8的編碼規則,給出了警告信息,實際插入的數據是3F 3F,也就是兩個問號。 x0dx0ax0dx0a查詢的時候是同樣的道理,MySQL也是根據set names設定的字元集來對返回給客戶端的結果集做相應的編碼轉換,如果轉換的結果和終端顯示的字元集一致,就能正確顯示,如果不一致就是亂碼。 x0dx0ax0dx0a結論是,只要終端的字元集和set names指定的字元集一致就可以讓MySQL在處理過程中執行正確的轉碼並且正確地顯示。 x0dx0ax0dx0a另外,如果通過程序操作MySQL資料庫, 那麼也需要事先執行set names命令來指定程序希望輸出的字元集。比如,用程序從一個utf8編碼的資料庫向另外一個gbk編碼的資料庫進行數據遷移,在選取源資料庫數據之前,需要執行set names gbk,才能取到gbk編碼的數據。