一、mysql字符集設定
(1) 系統變數:
– character_set_server:預設的內部操作字符集
– character_set_client:客戶端**資料使用的字符集
– character_set_connection:連線層字符集
– character_set_results:查詢結果字符集
– character_set_database:當前選中資料庫的預設字符集
– character_set_system:系統元資料(欄位名等)字符集
– 還有以collation_開頭的同上面對應的變數,用來描述字元序。
(2) 用introducer指定文字字串的字符集:
– 格式為:[_charset]』string』 [collate collation]
– 例如:
select _latin1 』string』;
select _utf8 『你好』 collate utf8_general_ci;
– 由introducer修飾的文字字串在請求過程中不經過多餘的轉碼,直接轉換為內部字符集處理。
二、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設定值。
三、mysql
預設字符集
mysql
對於字符集的指定可以細化到乙個資料庫,一張表,一列
.傳統的程式在建立資料庫和資料表時並沒有使用那麼複雜的配置,它們用的是預設的配置
.(1)
編譯mysql
時,指定了乙個預設的字符集,這個字符集是
latin1
;(2)
安裝mysql
時,可以在配置檔案
(my.ini)
中指定乙個預設的的字符集,如果沒指定,這個值繼承自編譯時指定的;
(3)
啟動mysqld
時,可以在命令列引數中指定乙個預設的的字符集,如果沒指定,這個值繼承自配置檔案中的配置,此時
character_set_server
被設定為這個預設的字符集;
(4)
安裝mysql
選擇多語言支援,安裝程式會自動在配置檔案中把
default_character_set
設定為utf-8
,保證預設情況下所有的資料庫所有表的所有列的都用
utf-8
儲存。四、修改預設字符集
(1)
最簡單的修改方法,就是修改
mysql
的my.cnf(這裡注意:windows 是
my.ini)
檔案中的字符集鍵值,
修改完後,重啟
mysql
的服務(2)
還有一種修改字符集的方法,就是使用
mysql
的命令設定了表的預設字符集為
utf8
並且通過
utf-8
編碼傳送查詢,存入資料庫的仍然是亂碼。那
connection
連線層上可能出了問題。解決方法是在傳送查詢前執行一下下面這句:
set names 'utf8';
它相當於下面的三句指令:
五、使用
mysql
字符集時的建議
(1)建立資料庫
/表和進行資料庫操作時盡量顯式指出使用的字符集,而不是依賴於
mysql
的預設設定,否則
mysql
公升級時可能帶來很大困擾;
資料庫和連線字符集都使用
latin1
時,雖然大部分情況下都可以解決亂碼問題,但缺點是無法以字元為單位來進行
sql操作,一般情況下將資料庫和連線字符集都置為
utf8
是較好的選擇;
(2)使用mysql capi
(mysql提供c
語言操作的
api)時,初始化資料庫控制代碼後馬上用
mysql_options
設定mysql_set_charset_name
屬性為utf8
,這樣就不用顯式地用
set names
語句指定連線字符集,且用
mysql_ping
重連斷開的長連線時也會把連線字符集重置為
utf8;
(3)對於
mysql php api
,一般頁面級的
php程式總執行時間較短,在連線到資料庫以後顯式用
set names
語句設定一次連線字符集即可;但當使用長連線時,請注意保持連線通暢並在斷開重連後用
set names
語句顯式重置連線字符集。
六、其他注意事項
my.cnf
中的default_character_set
設定只影響
mysql
命令連線伺服器時的連線字符集,不會對使用
libmysqlclient
庫的應用程式產生任何作用!
對欄位進行的
sql函式操作通常都是以內部操作字符集進行的,不受連線字符集設定的影響。
mysql字符集設定
show variables like char show variables like collation 2.修改編碼 set variable name value set character set connection utf8 3 顯示建立資料庫資訊 show create databa...
mysql 字符集設定
1.檢視mysql能夠支援的多種字符集 show character set 檢視mysql能夠支援的字符集的校對規則 show collation show collation like utf8 2.檢視當前字符集及校對 show variables like character set sho...
MySQL字符集設定
一 mysql字符集設定 1 系統變數 character set server 預設的內部操作字符集 character set client 客戶端 資料使用的字符集 character set connection 連線層字符集 character set results 查詢結果字符集 ch...