Mysql查看編碼方式專題
一、
查看資料庫的字元集
show variables like 'character_set_%';
輸出:
+---------------- ----------+--------+
| Variable_name | Value |
+-------------------- ------+--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_數據set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
+--------------------------+----- ---+
結合以下的編碼表我們發現目前的資料庫系統的編碼:
latin1_bin
西歐(多語言), 二元
binary
制中的查看的結果編碼集了。我現在WIN平台上面看編碼集結果如:+--------------------------+--------+ | Variable_name | Value |+--------------------------+--------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | utf8 8 || character_set_server | utf8 || character_set_system |utf8 |+-- ------------------------+--------+為什麼會出現不一致的情況呢?在我本機上面是顯示的UTF-8.而在LINUX上面居然是 二、透過指令修改其編碼建立資料庫指定資料庫的字元集my>create database mydb character set utf-88 ;#直接指定其編碼直接透過指令修改set character_set_client=utf8;set character_set_connection=utf8;set character_set_databasebasef8; character_set_server=utf8;修改完了再查詢show variables like 'character_set_%';+--------------------------+----- ---+| Variable_name | Value |+--------------------------+--------+ | character_set_client | utf8 || character_set_connection | utf8 || character_set_databasebaseacter_set_data | character_set_results | utf8 || character_set_server | utf8+--------------------------+--------+
結果全部都調整修改成UTF-8了!
修改完了之後我看select * from address_address; 出現亂碼了! Django也被弄亂+--------------------------+--------+
| Variable_name | Value |
+--- -----------------------+--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
+--------------- -----------+--------+
依舊是latin編碼的。
OK。我將其編碼設定一下
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_database=utf8;set charulter_8;
再查詢其編碼格式為:+--------------------------+--------+
| Variable_name | Value |
+ --------------------------+--------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_rescom |
| character_set_system | utf8 |
+--------------------------+--------+
現在將數據導進來
source /python/django/sql/nginxdjango.sql;
其中的nginxdjango.sql 其編碼也是utf-8 格式的!
導進來 資料庫查看居然還是亂碼不過程式跑起來是正常了!
MySQL字符集編碼的類型類型
gb2312_chinese_ci和gbk_chinese_ci以及gb2312_bin,gbk_bin而gb2312_bin可以說是gb2312_chinese_ci的子集,
而且gb2312_BIN是二進位儲存.區分大小寫資料庫編碼格式意義不一樣了
gbk_chinese_CI 支援簡體中文與繁體
gbk_bin 解釋同gb2312_BIN 鈴
新篇:2010-03-09
MySQL中預設字元集的設定有四級:伺服器級,資料庫級,表級。最終是字段級 的字元集設定。注意前三種都是預設設置,並不代碼你的字段最終會使用這個字符集設置。所以我們建議要用show create table table ; 或show full fields from tableName; 來檢查目前表中欄位的字元集設定。
MySQL 中關於連結環境的字元集設定有 Client端,connection, results 透過這些參數,MySQL就知道你的客戶端工具用的是什麼字 符集,結果集應該是什麼字元集。這樣MySQL就會做必要的翻譯,一旦這些參數有誤,自然就會導致字串在轉輸過程中的轉換錯誤。基本上99%的亂碼由些造 成。
1. 資料庫表中欄位的字元集設定 。 show create table TableName 或show full columns from tableName
mysql> show create table t1;
mysql> show full columns from t1; 查看列的編碼類型
ate3. 資料庫的編碼格式查詢資料庫 3.
輸出:CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */
2. 目前連接系統參數like 'char% ';
1. 中文,請確保表中此欄位的字元集為中文相容:
big5 | Big5 Traditional Chinese gb2312 | Big5 2312 GBK Simplified Chinese
utf8 | UTF- 8 Unicode
[其它補充]
修改資料庫的字元集
mysql>use mydb
db 建立資料庫指定資料庫的字元集mysql>create database mydb character set utf-8;2010-05-02 新加入show variables like 'character_set_%'; 所查看到其中三項character_set_clientcharacter_set_connectioncharacter_set_results 而這三項是可以透過「c只是說明目前連線的客戶端的編碼情況並沒有影響到資料庫伺服器本身的編碼情況