編碼查看方式以及解釋說明:
須要以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;
其中,
character_set_client: 爲客戶端編碼方式;客戶端發送的查詢中使用的字符集
character_set_connection: 爲創建鏈接使用的編碼;
character_set_database: 數據庫的編碼;數據庫服務器中某個庫使用的字符集設定,若是建庫時沒有指明,將使用服務器安裝時指定的字符集設置。
character_set_results:結果集的編碼;
有待驗證:只要保證以上幾個採用的編碼方式同樣,就不會出現亂碼問題。
character_set_server: 數據庫服務器的編碼;服務器安裝時指定的默認字符集設定。
character_system: 數據庫系統使用的字符集設定。
另外一個查看數據庫編碼的命令:
>SHOW VARIABLES LIKE 'collation%';
MYSQL關於字符編碼方面的存儲原理
程序配置文件.鏈接串: CharSet=UTF8, 說明:
查詢語句使用此種編碼格式發送到服務器上
注意:查詢結果仍然是以反回數據的格式傳送。
查詢語句執行邏輯:
1. 程序配置鏈接串: CharSet=UTF8, 將查詢語句使用"CharSet=UTF8"此種格式的編碼發送到服務器上
2. Mysql將接收到的查詢語句轉成character_set_client指定的格式,
3. 接着轉成character_set_connection指定的格式
4. 接着將character_set_connection轉爲內部操做字符
- 使用每一個數據字段的CHARACTER SET設定值;
- 若上述值不存在,則使用對應數據表的DEFAULT CHARACTER SET設定值(MySQL擴展,非SQL標準);
- 若上述值不存在,則使用對應數據庫的DEFAULT CHARACTER SET設定值;
- 若上述值不存在,則使用character_set_server設定值。
5. 將操做結果從內部操做字符集轉換爲character_set_results。
執行語句執行邏輯
1. 程序配置鏈接串: CharSet=UTF8, 將執行語句使用"CharSet=UTF8"此種格式的編碼發送到服務器上
2. Mysql將接收到的查詢語句轉成character_set_client指定的格式,
3. 接着轉成character_set_connection指定的格式
4. 接着將character_set_connection轉爲內部操做字符
- 使用每一個數據字段的CHARACTER SET設定值;
- 若上述值不存在,則使用對應數據表的DEFAULT CHARACTER SET設定值(MySQL擴展,非SQL標準);
- 若上述值不存在,則使用對應數據庫的DEFAULT CHARACTER SET設定值;
- 若上述值不存在,則使用character_set_server設定值。
5. 將操做結果從內部操做字符集轉換爲character_set_database儲存