MySQL字符集和比较规则

当我们创建数据库或者表的时候,就要指定字符集和比较规则。 不指定则MySQL 默认。

字符集

计算机的世界里,它是只认识 0 和 1 的, 那汉字怎么办? 英文怎么办?

我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果

通俗的说,按照何种规则将字符存储在计算机中,如’a’用什么表示,称为"编码";反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如果使用了错误的解码规则,则导致’a’解析成’b’或者乱码。

ASCII字符集&编码

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)

是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语

image.png

image.png

ASCII的最大缺点是只能显示26个基本拉丁字母、阿拉伯数目字和英式标点符号,因此只能用于显示现代美国英语

已经淘汰

GBXXXX字符集&编码

计算机发明之处及后面很长一段时间,只用应用于美国及西方一些发达国家,ASCII能够很好满足用户的需求。

但是当天朝也有了计算机之后,为了显示中文,必须设计一套编码规则用于将汉字转换为计算机可以接受的数字系统的字符集。

image.png

什么都有, 基本东亚文字全了

GBK是对GB2312-80的扩展, 收录了繁体

Unicode字符集&UTF编码

你说的对, 但是每个国家有自己的编码

那网络聊天怎么办? 编码不同根本无法识别

为了解决这个问题,一个伟大的创想产生了——Unicode。Unicode编码系统为表达任意语言的任意字符而设计。 被几种语言共用的字符通常使用相同的数字来编码, 不存在二义性。不再需要记录"模式"了

MySQL的UTF-8最多支持三个字节

UTF-8mb4支持四个字节

比较规则