MySQL CHARACTER SET 與 COLLATION

MySQL資料庫內儲存許多資料,但是要讓這些資料正確的儲存與顯示,我們可以在設定或是run time的時候去指定CHARACTER SET (字元集)。

我們可以從command line去看MySQL支援的CHARACTER SET = SHOW CHARACTER SET;


如上圖,有大家比較熟悉的如big5、ASCII等字元集。其他詳細內容請參考 MySQL字元集與校對規則

所謂字元集,就是指每個字符的內碼對應規則,例如我們使用big5的字元集儲存的資料,如果以其他的字元集來顯示,就會得到亂碼。


除此之外,還有一個COLLATION (翻譯成校對或是定序規則),如上圖,這個COLLATION是使用來排序使用的,例如big5的字元集有一個預設的COLLATION~ big5_chinese_ci,ci指的就是case insensitive (不分大小寫)。

定序規則還可以分成幾種類型:
(1) CS: case sensitive 區分大小寫,如果不分大小寫就是CI (case insensitive)
(2) AS: accent sensitive 區分腔調,如果不分腔調就是AI (accent insensitive)
(3) KS: kana sensitive 區分日文中的平假名與片假名,如果不分就是KI (kana insensitive)
(4) WS: width sensitive 區分全形與半形,如果不分就是WI (width insensitive)

AS中是說有些字元會依發音腔調而有差異,如果是AI (accent insensitive) 的話,你去搜尋resume,結果也會出現résumé的內容。通常中文只需要注意CS/CI與WS/WI的問題。

如果要知道某個database的CHARACTER SET 與 COLLATION,可以使用

SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = 'db_name';

執行結果如下 :


張貼留言

0 留言