一、什么是字符集

字符是多个文字和符号的总称,包括各个国家的文字、标点符号、图形符号、数字等。字符集多个字符的集合。

字符集合种类较多,每个字符集包含的字符的个数不同。对于字符集不支持的字符,则以乱码显示。

常见的字符集有ASCII字符集、GBK字符集、GB2312字符集、GB18030字符集、Unicode字符集、BIG5字符集等。

ASCII:是基于罗马字母表的一套电脑编码系统,主要显示英语和其他英语语言,它采用的是1字节低七位来表示,高位始终为0;

GB2312:是中国国家标准的简体中文字符集,它采用的是双字节来表示。

GB18030:是对GB2312的扩充,它采用的时单字节、双字节和四字节三种形式来表示。

Unicode:是计算机科学领域的一项业界标准,支持了所有国家的文字字符。

utf-8是Unicode的其中一种常用的使用方式,是一种针对Unicode可变长度的字符编码,又称万国码。

utf-16采用16位来表示,utf-32采用32位来表示。

二、什么是校对规则

校对规则是在字符集内用于比较字符的一套规则,比如有的区分大小写,有的则无视。

不同的字符集有着不同的校对规则。命名约定通常以字符集名称开头,并以_ci,_cs,_bin结束。

针对字符集utf8的的校对规则有20余种,通用的有以下三种,也是utf8常用的三种。

(1) utf8_general_ci

case insensitive 不区分大小写,字符集utf8默认的校对规则。

(2) utf8_general_cs

case sensitive 区分大小写

(3) utf8_bin

binary 二元法,直接比较的字符编码,可以区分大小写,因为字符集的‘A’和’a’的编码显然不同。

mysql针对字符集和校检规则的一些操作指令
#显示mysql支持的所有字符集
show charset;
#显示mysql支持的所有的校对集
show collattion;
#显示当前数据库使用的校检规则
show variables like “collation_%”;

在mysql5.7.23版本中字符集有41种,校对规则有222种,并且mysql还在不断的为其增加中,版本越高支持的字符集和校对规则越多。