一、什么是字符集
字符是多个文字和符号的总称,包括各个国家的文字、标点符号、图形符号、数字等。字符集多个字符的集合。
字符集合种类较多,每个字符集包含的字符的个数不同。对于字符集不支持的字符,则以乱码显示。
常见的字符集有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还在不断的为其增加中,版本越高支持的字符集和校对规则越多。