1、查看字符集相關變量
| mysql> 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 | c:/wamp/mysql/share/charsets/ |+————————–+——————————-+ |
2、字符集轉換過程
客戶端——–字符集轉換器———–服務
gbk ————gbk-utf8-utf8———-utf8
gbk————-gbk-gbk-utf8———-utf8
客戶端要告訴服務端使用的編碼是什么,然后沒有直接告訴服務器而告訴“轉換器”
字符集轉換器收到客戶端信息后查看服務器是什么編碼,然后將客戶端傳來的字符集轉換成服務器設置的字符集
服務器向客戶端發送信息時也是先告訴“轉換器”
3、字符集變量解釋
character_set_client
客戶端字符集,連接mysql的客戶端程序的字符集,該變量告訴轉換器客戶端發送的字符集。
character_set_connection
轉換器轉換要轉換成的字符集
character_set_server
服務端使用的字符集,存入數據時使用的字符集
character_set_results
查詢的結果是什么編碼
推論:什么時候會出現亂碼
1:client 什么與實際不符,微軟命令提示符默認是gbk,如果設置成utf8就會出現亂碼
2:results與客戶端頁面不符的時候
什么時候會丟失數據
connection和服務器的字符集比client小時,會丟失數據,比如客戶端是utf8而轉換器是gbk
當客戶端是utf8 而服務端是 gbk時要設置
set character_set_client=utf8
set character_set_connection=gbk/utf8 這里設置什么都可以,因為最終轉換器會根據服務器的類型進行轉換
set character_set_results=utf8
4、設置字符集變量
set names utf8 進入mysql設置所用的字符集
在my.conf中添加
| [client]default-character-set=utf8[mysqld]default-character-set=utf8 |
5.修改mysql字符集
將latin1字符集的數據庫修改成gbk字符集的數據庫的過程
(1)、導出表結構
| mysqldump -uroot -p –default-character-set=gbk -d DATABASE_NAME > createtable.sql |
–default-character-set=gbk 表示以什么字符集連接
新聞熱點
疑難解答