Mysql字符集 為Mysql選擇合適的字符集

2021-07-12 08:06:26 字數 1775 閱讀 2800

字符集是一套符號和編碼的規則,不論是在oracle資料庫還是在mysql資料庫,都存在字符集的選擇問題,而且如果在資料庫建立階段沒有正確選擇字符集,那麼可能在後期需要更換字符集,而字符集的更換是代價比較高的操作,也存在一定的風險,所以,我們推薦在應用開始階段,就按照需求正確的選擇合適的字符集,避免後期不必要的調整。

mysql伺服器可以支援多種字符集(可以用show character set命令檢視所有mysql支援的字符集),在同一臺伺服器、同乙個資料庫、甚至同乙個表的不同欄位都可以指定使用不同的字符集,相比oracle等其他資料庫管理系統,在同乙個資料庫只能使用相同的字符集,mysql明顯存在更大的靈活性。

mysql的字符集包括字符集(character)和校對規則(collation)兩個概念。

字符集是用來定義mysql儲存字串的方式,校對規則則是定義了比較字串的方式。字符集和校對規則是一對多的關係, mysql支援30多種字符集的70多種校對規則。

每個字符集至少對應乙個校對規則。可以用show collation like 'utf8%';命令檢視相關字符集的校對規則。

unicode是一種編碼規範。我們在這裡簡述一下unicode編碼產生的歷史。

先從ascii碼說起,ascii碼也是一種編碼規範,只不過ascii碼只能最多表示256個字元,是針對英文產生的,而面對中文、阿拉伯文之類的複雜文字,256個字元顯然是不夠用的。於是各個國家或組織都相繼制定了符合自己語言文字的標準,比如gb2312、big5等等。但是這種各自制定自己的標準的做法顯然是有很多弊端的,於是unicode編碼規範應運而生。

unicode也是一種字元編碼方法,不過它是由國際組織設計,可以容納全世界所有語言文字的編碼方案。unicode的學名是"universal multiple-octet coded character set",簡稱為ucs。ucs可以看作是"unicode character set"的縮寫。

unicode有兩套標準ucs-2和ucs-4,前者用2個位元組表示乙個字元,後者用4個位元組表示乙個字元。以目前常用的ucs-2為例,它可以表示的字元數為2^16=65535,基本上可以容納所有的歐美字元和絕大多數亞洲字元。

我們建議在能夠完全滿足應用的前提下,盡量使用小的字符集。

因為更小的字符集意味著能夠節省空間、減少網路傳輸位元組數,同時由於儲存空間的較小間接的提高了系統的效能。

有很多字符集可以儲存漢字,比如utf8、gb2312、gbk、latin1等等,但是常用的是gb2312和gbk。因為gb2312字型檔比gbk字型檔小,有些偏僻字(例如:洺)不能儲存,因此在選擇字符集的時候一定要權衡這些偏僻字在應用出現的機率以及造成的影響,不能做出肯定答覆的話最好選用gbk。

mysql的字符集和校對規則有4個級別的預設設定:伺服器級、資料庫級、表級和字段級。分別在不同的地方設定,作用也不相同。

伺服器字符集和校對,在mysql服務啟動的時候確定。可以在my.cnf中設定:

[mysqld]

default-character-set=utf8

或者在啟動選項中指定:

mysqld --default-character-set=utf8

或者在編譯的時候指定:

./configure --with-charset=utf8

如果沒有特別的指定伺服器字符集,預設使用latin1作為伺服器字符集。上面三種設定的方式都只指定了字符集,沒有指定校對規則,這樣是使用該字符集預設的校對規則,如果要使用該字符集的非預設校對規則,則需要在指定字符集的同時指定校對規則。

可以用show variables like 'character_set_server';命令查詢當前伺服器的字符集和校對規則。

mysql 集群字符集 Mysql 字符集

字符集與字元比較 字符集字符集是某種字元的集合,比如最常見的ascii碼,由127個字元組成,只需要乙個位元組就能表示 我們常說的字符集還是gbk iso utf8 mysql 我們使用得最多的字符集就是gbk 和 utf8了 他們都是變長字符集,如果字元在ascii範圍內就使用乙個位元組表示,其他...

mysql字符集 MySQL字符集選擇

一 怎樣選擇合適的字符集 對mysql資料庫來說,字符集很重要,因為資料庫儲存的資料大部分都是各種文字,字符集對資料庫的儲存,處理效能都會有所影響。主要考慮一下幾方面的因素 1.滿足應用支援語言的需求,應用處理各種各樣的文字,發布到使用不同語言的國家或地區,可以選擇unicode字符集,mysql的...

mysql字符集修改 MySql字符集修改

問題分析 普通的字串或者表情都是佔位3個位元組,所以utf8足夠用了,但是移動端的表情符號佔位是4個位元組,普通的utf8就不夠用了,為了應對無線網際網路的機遇和挑戰 避免 emoji 表情符號帶來的問題 涉及無線相關的 mysql 資料庫建議都提前採用 utf8mb4 字符集,這必須要作為移動網際...