字符集简介
作用:为了让数据在人和计算机都能被”看的懂“。
我们知道在计算机中只能存储二进制数据,那该怎么存储字符串呢?当然是建立字符与二进制数据的映射关系了,建立这个关系最起码要搞清楚两件事儿:
- 你要把哪些字符映射成二进制数据? 也就是界定清楚字符范围。
- 怎么映射? 将一个字符映射成一个二进制数据的过程也叫做 编码 ,将一个二进制数据映射到一个字符的过程叫做 解码 。 人们抽象出一个 字符集 的概念来描述某个字符范围的编码规则。比方说我们来自定义一个名称为 xiaohaizi 的字符集,它包含的字符范围和编码规则如下: 包含字符 ‘a’ 、 ‘b’ 、 ‘A’ 、 ‘B’ 。 编码规则如下: 采用1个字节编码一个字符的形式,字符和字节的映射关系如下: ‘a’ -> 00000001 (十六进制:0x01) ‘b’ -> 00000010 (十六进制:0x02) ‘A’ -> 00000011 (十六进制:0x03) ‘B’ -> 00000100 (十六进制:0x04) 有了 xiaohaizi 字符集,我们就可以用二进制形式表示一些字符串了,下边是一些字符串用 xiaohaizi 字符集编码后的二进制表示: ‘bA’ -> 0000001000000011 (十六进制:0x0203) ‘baB’ -> 000000100000000100000100 (十六进制:0x020104) ‘cd’ -> 无法表示,字符集xiaohaizi不包含字符’c’和’d’
—— 引用《MySQL是怎么运行的》
比较规则简介
- 将两个大小写不同的字符全都转为大写或者小写。
- 再比较这两个字符对应的二进制数据。
注意:同一种字符集可以有多种比较规则
MySQL中的utf8和utf8mb4
utf8mb3 :阉割过的 utf8 字符集,只使用1~3个字节表示字符。
utf8mb4 :正宗的 utf8 字符集,使用1~4个字节表示字符。
mysql字符集的查看
SHOW (CHARACTER SET|CHARSET) [LIKE 匹配的模式];
mysql比较规则的查看
SHOW COLLATION [LIKE 匹配的模式];
注意:每种字符集对应若干种比较规则,每种字符集都有一种默认的比较规则
欢迎关注ggball博客!
|