MySQL中的字符集与字符序

这篇文章详细介绍一下MySQL中的字符集和字符序相关的问题,里里外外地了解一下字符集和字符序的方方面面,同时重点说明一下开发中需要注意的问题。

文章基于MySQL 8.0,也会涉及到5.7版本。主要参考MySQL手册:https://dev.mysql.com/doc/refman/8.0/en/

1. 太长不爱看版

  • 字符集(Character Set)是字符的编码规则,字符序(Collation)是字符的排序规则;
  • 每一个字符集都包含一定范围的字符;
  • 每一个字符集都有一个或多个字符序,其中一个字符序为默认字符序;
  • 每一个字符序都有一个相关联的字符集;
  • 两个不同的字符集没有相同的字符序;
  • 相同数据使用不同的字符序排序结果可能会不同;
  • MySQL支持服务(server)、数据库(database)、表(table)、字段(column)以及字符串字面量(string literal)等多个级别的字符集与字符序的设置;
  • 库表创建以及程序中尽可能使用utf8mb4字符集(可支持emoji);
  • MySQL中的utf8字符集是utf8mb3字符集的别名,避免使用;
  • MySQL 5.7的服务默认字符集是latin1,而8.0中是utf8mb4
  • 通过SHOW CHARACTER SET查看当前服务器所支持的字符集;
  • 通过SHOW COLLATION查看所有的字符序;
  • MySQL中有多个关于字符集和字符序的系统变量,可以针对全局以及当前session进行设置;
  • 通过SHOW VARIABLES LIKE "character_set%"查看当前服务以及数据库的字符集设置;
  • 使用client客户端连接数据库时,如果编码有问题,可以通过SET NAMES charset_name来设置和数据库一致的字符集;
  • 库表内容在不同字符集之前转换可能会发生数据丢失问题。

2. 什么是字符集与字符序

在大多数情况下,我们并不需要了解字符集与字符序,但是在涉及到不同字符集的转换时可能会出现问题,这时了解一下相关的知识还是有帮助的。

我们首先了解一下字符集的原理。

2.1 字符与字符集

字符是我们经常接触到的东西,比如a、中、ß,以及

相关文章

在正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信...
> [合辑地址:MySQL全面瓦解](https://www.cnblogs.c...
物理服务机的CPU、内存、存储设备、连接数等资源有限,某个时...
1 回顾 上一节我们详细讲解了如何对数据库进行分区操作,包括...
navicat查看某个表的所有字段的详细信息 navicat设计表只能一...
文章浏览阅读4.3k次。转载请把头部出处链接和尾部二维码一起...