校对规则(Collation)也可以称为排序规则,是指在同一个字符集内字符之间的比较规则。字符集和校对规则是一对多的关系,每个字符集都有一个默认的校对规则。字符集和校对规则相辅相成,相互依赖关联。大部分字符集都只对应一种字符编码,例如:ASCII、IOS-8859-1、GB2312、GBK,都是既表示了字符集又表示了对应的字符编码。所以一般情况下,可以将两者视为同义词。Unicode 字符集除外,Unicode 有三种编码方案,即 UTF-8、UTF-16 和 UTF-32。最为常用的是 UTF-8 编码。
有些数据库并没有清晰的区分开字符集和校对规则。例如,在 SQL Server 中创建数据库时,选择字符集就相当于选定了字符集和校对规则。想了解 ASCII、GB2312、GBK、Unicode 字符集的小伙伴,可点击以下链接阅读学习:
- ASCII编码,将英文存储到计算机
- GB2312编码和GBK编码,将中文存储到计算机
- Unicode字符集,将全世界的文字存储到计算机
SHOW VARIABLES LIKE 'character%';
命令查看当前 MySQL 使用的字符集,命令和运行结果如下:
mysql> SHOW VARIABLES LIKE 'character%'; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ | +--------------------------+---------------------------------------------------------+ 8 rows in set, 1 warning (0.01 sec)上述运行结果说明如下表所示:
名称 | 说明 |
---|---|
character_set_client | MySQL 客户端使用的字符集 |
character_set_connection | 连接数据库时使用的字符集 |
character_set_database | 创建数据库使用的字符集 |
character_set_filesystem | MySQL 服务器文件系统使用的字符集,默认值为 binary,不做任何转换 |
character_set_results | 数据库给客户端返回数据时使用的字符集 |
character_set_server | MySQL 服务器使用的字符集,建议由系统自己管理,不要人为定义 |
character_set_system | 数据库系统使用的字符集,默认值为 utf8,不需要设置 |
character_sets_dir | 字符集的安装目录 |
可以通过乱码时,不需要关心 character_set_filesystem、character_set_system 和 character_sets_dir 这 3 个系统变量,它们不会影响乱码 。
SHOW VARIABLES LIKE 'collation\_%';
命令查看当前 MySQL 使用的校对规则,命令和运行结果如下:
mysql> SHOW VARIABLES LIKE 'collation\_%'; +----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | gbk_chinese_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | +----------------------+-------------------+ 3 rows in set, 1 warning (0.01 sec)对上述运行结果说明如下:
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有