MySQL 5.1支持兩種字符集以保存Unicode數據:
· ucs2,UCS-2 Unicode字符集。
· utf8,Unicode字符集的UTF8編碼。
在UCS-2(二進制Unicode表示法)中,每一個字符用一個雙字節的Unicode編碼來表示的,第一個字節表示重要的意義。例如:"LATIN CAPITAL LETTER A"的Unicode編碼是0x0041,它按順序存儲為兩個字節:0x00 0x41。"CYRILLIC SMALL LETTER YERU"(Unicode 0x044B)順序存儲為兩個字節:0x04 0x4B。對于Unicode字符和它們的編碼,請參見Unicode 主頁。
當前,UCS-2還不能夠用作為客戶端字符集,這意味著SET NAMES 'ucs2'不起作用。
UTF8字符集(轉換Unicode表示)是存儲Unicode數據的一種可選方法。它根據 RFC 3629執行。UTF8字符集的思想是不同Unicode字符采用變長字節序列編碼:
· 基本拉丁字母、數字和標點符號使用一個字節。
· 大多數的歐洲和中東手寫字母適合兩個字節序列:擴展的拉丁字母(包括發音符號、長音符號、重音符號、低音符號和其它音符)、西里爾字母、希臘語、亞美尼亞語、希伯來語、阿拉伯語、敘利亞語和其它語言。
· 韓語、中文和日本象形文字使用三個字節序列。
RFC 3629說明了采用一到四個字節的編碼序列。當前,MySQLUTF8不支持四個字節。(UTF8編碼的舊標準是由RFC 2279給出,它描述了從一到六個字節的UTF8編碼序列。RFC 3629補充了作廢的RFC 2279;因此,不再使用5個字節和6個字節的編碼序列。)
提示:使用UTF8時為了節省空間,使用VARCHAR而不要用CHAR。否則,MySQL必須為一個CHAR(10) CHARACTER SET utf8列預備30個字節,因為這是可能的最大長度。