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个字节,因为这是可能的最大长度。