一、概念
字符集:编码与字符一一对应关系的集合。以下图片中字符集缩写为CS。
校对:某一字符集内部字符的比较规则。
校对规则一般有这些特征:
· 两个不同的字符集不能有相同的校对规则。
· 每个字符集有一个默认校对规则 。例如,latin1默认校对规则是latin1_swedish_ci。
· 存在校对规则命名约定:它们以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束。
二、字符显示过程
三、非连接的字符集变量
以下介绍的变量跟具体连接无关。MySQL在处理字符时具体使用哪个字符集依据下述优先级,从字段级到服务器级。如果高优先级的没有明确指定使用什么字符集,则用次优先级的字符集。
1.服务器字符集(优先级最低)
当启动mysql服务 时,根据使用的初始选项设置或者配置文件来确定服务器字符集和校对规则。可设置的相关系统变量为character_set_server 和collation_server
2.数据库字符集(优先级低)
每一个数据库有一个数据库字符集和一个数据库校对规则,它不能够为空。
MySQL这样选择数据库字符集和数据库校对规则:
· 如果指定了CHARACTER SET X和COLLATE Y,那么采用字符集X 和校对规则Y 。
· 如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。
· 否则,采用服务器字符集和服务器校对规则。
如果在CREATE TABLE语句中没有指定表字符集和校对规则,则使用数据库字符集和校对规则作为默认值。
3.待续...