mysql
對字符集支援有兩個方面:
字符集(characterset
)和排序方式(collation
)對於字符集的支援細化到四個層次:
伺服器(server)
,資料庫(database)
,資料表(table)
和連線(connection)
但是,傳統的程式在建立資料庫和資料表時,並沒有使用那麼複雜的配置,他們使用的是預設的配置,那麼,預設的配置從何而來呢?
(1)編譯
mysql
時,指定了乙個預設的字符集,這個字符集是latin1;
(2)安裝
mysql
時,可以在配置檔案(my.ini)
中指定乙個預設的字符集,如果沒指定,這個值繼承自編譯時指定的;
(3)啟動
mysqld
時,可以在命令列引數中指定乙個預設的字符集,如果沒有指定,這個值繼承自配置檔案中的配置,此時character_set_server
被設定為這個預設的字符集;
(4)當建立
乙個新的
資料庫時,除非明確指定,否則這個資料庫的字符集被預設設定為character_set_server
;(5)
當選定了乙個資料庫時,character_set_database
被設定為這個資料庫預設的字符集;
(6)在這個資料庫中建立一張表時,表預設的字符集被設定為character_set_database
,也就是這個資料庫預設的字符集;
(7)當在表內設定一欄時,除非明確指定,否則此欄預設的字符集就是表預設的字符集;
如果什麼地方都不修改,那麼所有的資料庫的所有表的所有欄位都用latin1
儲存,不過我們如果安裝mysql
,一般都會選擇多語言支援,也就是說,安裝程式會自動在配置檔案中把default_character_set
設定為utf-8
,這保證了預設情況下,所有的資料庫的所有表的所有欄位都是用的utf-8
儲存。2.
檢視預設字符集,預設情況下,mysqld
的字符集是latin1(iso_8859_1)
showvariables like '%character%'
3.修改預設字符集
(1)最簡單的修改方法,就是修改mysql
的my.ini
檔案中的字符集鍵值:
如果default-character-set= utf8
character_set_server= utf8
修改完以後,重啟mysql
的服務,servicemysql restart
(2)還有一種修改字符集的方法,就是使用mysql
的命令:
setcharacter_set_client= utf8
setcharacter_set_connection = utf8
setcharacter_set_database = utf8
setcharacter_set_database = utf8
setcharacter_set_server = utf8
setcollation_connection = utf8
setcollation_database = utf8
setcollation_server = utf8
一般就算設定了表的預設字符集為utf8
,並且通過utf-8
編碼傳送查詢,你會發現存入資料庫的仍然是亂碼。問題就出在這個connection
連線層上。解決方法是在傳送查詢前執行一下下面的語句:
setnames 'utf8'
;這相當於下面的三句指令:
setcharacter_set_client = utf8
setcharacter_set_results = utf8
setcharacter_set_connection = utf8
mysql 集群字符集 Mysql 字符集
字符集與字元比較 字符集字符集是某種字元的集合,比如最常見的ascii碼,由127個字元組成,只需要乙個位元組就能表示 我們常說的字符集還是gbk iso utf8 mysql 我們使用得最多的字符集就是gbk 和 utf8了 他們都是變長字符集,如果字元在ascii範圍內就使用乙個位元組表示,其他...
mysql字符集 MySQL字符集選擇
一 怎樣選擇合適的字符集 對mysql資料庫來說,字符集很重要,因為資料庫儲存的資料大部分都是各種文字,字符集對資料庫的儲存,處理效能都會有所影響。主要考慮一下幾方面的因素 1.滿足應用支援語言的需求,應用處理各種各樣的文字,發布到使用不同語言的國家或地區,可以選擇unicode字符集,mysql的...
mysql api 字符集 MySQL字符集
mysql字符集包括字符集 character 和 collation 兩個概念。字符集是用來定義mysql儲存字串的規則,校對規則則是定義了比較字串的方式。字串和校對規則是一對多的 關係。使用命令 show collation like gbk 可檢視相關的校對規則 使用 show charact...