字符集:计算机只能存储二进制数据,而字符集就是字符和二进制数据的映射关系,不同的字符集有不同的规则,将字符转成二进制称为编码,反之称为解码
一些常见的字符集:
ASCII、ISO 8859-1、GB2312、GBK、utf8、utf8mb4
我们常常看到排序规则是依赖以上的字符编码以后的比较规则,同一种字符会有多种比较规则,如下utf8:
utf8
utf8_general_ci|utf8_bin|utf8_unicode_ci 等等(utf8比较规则比较多,甚至有根据语种,默认使用utf8_general_ci,一般不指定比较规则的情况下都会设为默认)
我们最常用到的utf8其实是utf8mb3,只使用了1~3个字节标识字符,而utf8mb4则用了1~4个字节,我们常常调侃utf8mb4才是真正的utf8,假设我们的需要存储一些emoji表情包(数据库中需要记录微信昵称),则需要用到utf8mb4
字符集和比较规则在mysql中4个级别:服务器、数据库、表、列
通常我们使用的字符集会进行转换,从服务器到客户端会有三个过程:服务器接收字符集,服务器转换字符集,返回给客户端字符集
character_set_client、character_set_connection、character_set_results
通常来说我们都会设置成一致,减少字符集的转换,也可以统一为mysql服务器层设置
安装目录中找到my.cnf|my.ini(不同操作系统不同)
[client]
default-character-set=utf8