mysql編碼不得不知的問題

1、查看mysql相關編碼

--查看mysql數據庫所支持的編碼
showcharacter set;
--查看當前變量中的一些編碼情況
show variableslike 'character%';
--查看某個數據庫的編碼
SHOWCREATE DATABASEdb_name;
--查看某個表的字符集
SHOWCREATE TABLEtable_name;
SHOWTABLE STATUS LIKE 'table_name'

2、參數說明:
character_set_client:客戶端來源數據使用的字符集
character_set_connection:連接層字符集
character_set_database:當前選中數據庫的默認字符集
character_set_filesystem:文件保存格式
character_set_results:查詢結果字符集
character_set_server:默認的內部操作字符集
character_set_system:系統元數據(字段名等)字符集
character_sets_dir:mysql編碼文件放置位置

3、MySQL中的字符集轉換過程
1. MySQL Server收到請求時將請求數據從character_set_client轉換爲character_set_connection;
2. 進行內部操作前將請求數據從character_set_connection轉換爲內部操作字符集,其確定方法如下:
• 使用每個數據字段的CHARACTER SET設定值;
• 若上述值不存在,則使用對應數據表的DEFAULT CHARACTER SET設定值(MySQL擴展,非SQL標準);
• 若上述值不存在,則使用對應數據庫的DEFAULT CHARACTER SET設定值;
• 若上述值不存在,則使用character_set_server設定值。
3. 將操作結果從內部操作字符集轉換爲character_set_results。

4、一些小技巧
1)通過使用set names utf8(gbk)等編碼修改命令在database級別,可以實現修改
character_set_client、character_set_connection、character_set_results操作
2)要正常顯示數據,要確保display的平臺的編碼和character_set_results中的編碼一致,如:默認情況,win的dos中編碼爲gbk,linux的shell下編碼爲utf8,如果要使用同一個數據庫能夠都正常顯示,需要使用set names utf8(gbk)等操作
3)MySQL中的字符序名稱遵從命名慣例:以字符序對應的字符集名稱開頭;以_ci(表示大小寫不敏感)、_cs(表示大小寫敏感)或_bin(表示按編碼值比較)結尾,例如:在字符序“utf8_general_ci”下,字符“a”和“A”是等價的;

5、my.cnf/my.ini中相關參數設置
default_character_set設置隻影響mysql命令連接服務器時的連接字符集
init_connect=’SET NAMES utf8′非超級用戶建立連接時執行set names utf8
init_connect=’set collation_connection=utf8_general_ci’

在[client] 中設置
default-character-set=utf8
影響下面三個參數
character_set_client
character_set_connection
character_set_results

在[mysqld]中設置
default-character-set=utf8
影響下面兩個參數
character_set_database
character_set_server

這樣mysql就可以基本上使用utf8編碼工作了,如果客戶端是gbk編碼的,可以使用set names gbk進行臨時修改

發佈了210 篇原創文章 · 獲贊 202 · 訪問量 171萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章