mysql字符集


1.字符集指的是某个字符范围的编码规则

2.字符集的常见种类:ASCII,latin1,GB2312,GBK,Unicode(utf8,utf16,utf32)

3.比较规则是针对某种字符集里面字符大小比较的一种规则

一般比较规则的名称以字符集开头,中间紧跟着该比较规则用于哪种语言,后缀表示是否区分重音、大小写,例如utf8_general_ci表示utf8字符集的通用的不区分大小写的比较规则

后缀 英文 描述
_ai accent insensitive 不区分重音
_as accent sensitive 区分重音
_ci case insensitive 不区分大小写
_cs case sensitive 区分大小写
_bin binary 以二进制比较

4.在mysql中一个字符集有多个比较规则,有一个默认比较规则。每个比较规则必须对于一个字符集

5.mysql有四个级别的比较规则:服务器、数据库、表、字段

6.从客户端发送请求到服务器接收请求并返回结果过程中字符集的转换:

  • (1)客户端使用操作系统的字符集编码请求字符串
  • (2)服务器端使用character_set_client字符集解码,将解码后的字符集用character_set_connection进行编码
  • (3)如果character_set_connection代表的字符集与列的字符集相同则直接进行操作,否则需要将character_set_connection字符集转换成列的字符集再进行操作
  • (4)将结构转换成character_set_results字符集后发送到客户端
  • (5)客户端用操作系统的字符集编码对结果进行解码

在这个过程中各个系统变量的含义如下:

系统变量 含义
character_set_client 操作系统用来解码从客户端发送过来的请求
character_set_connection 操作系统将用character_set_client解析出来的字符串用character_set_connection编码
character_set_resultes 操作系统用来将结果编码并发送到客户端

一般情况下要使用保持这三个变量的值和客户端使用的字符集相同

7.比较规则一般用于字符串比较大小和对列进行排序


文章作者: Alex
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Alex !
  目录