MySQL – 何謂 Character Sets and Collations

MySQL 是各開源架站系統最偏好的資料庫系統,使用資料庫不用說當然就是存取資料。在資料存取時,最重要的就是編碼問題,這是中文比英文麻煩之處。

MySQL 有二個與編碼相關的設定:Character Sets (文字編碼)、Collations (連線校對)。依據 MySQL 官方說明,此二者說明如下:

Character Sets 與 Collations 的區別

Character set 是一組符號及其編碼。舉例來說:有四個字元『A, B, a, b』,這些字元即所謂的符號 (symbols),而這些符號存在資料庫有特定的編碼方式 (encodings)。譬如:’0′ 代表 A, ’1′ 代表 B。

Collation 則是一組用來比較上述文字編碼的規則 (rules)。譬如:上述 A 與 B 進行比較,我們知道 A < B,因為 A 的編碼 0 比 B 的編碼 1 來得小,這是所謂的 binaray,此外還有 case sensitive, case insensitive 等等。

Character Sets 與 Collations 的設置

MySQL預設的編碼與校對都是 Latin1,但對中文來說,比較適當的方式應該是 utf8、big5 或 gb 等,若想同時容納數種不同語言(繁體、簡體、日文等),utf8 是最佳選擇。可以使用 『show variables like “%character"』及『show variables like “%collation%"』查看資料庫設定。

collation 選擇 utf8-_general_ci,ci 表示 case insensitive。

修改 my.cnf

可以在 my.cnf 的 [mysqld] 區段加入:

character-set-server=utf8
collation-server=utf8_general_ci

以設定 server 端編碼及校對方式,此設定在 4.1.3 版本後才有效,之前版本設定為:

default-character-set=utf8
default-collation=utf8_general_ci

延伸閱讀

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

你可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>