文章目录
- 一、基本概念
- 二、mysql数据库的字符集和字符集编码
一、基本概念
字符集:可以理解为某些字符组成的一个集合,集合中由哪些字符组成是由制定这个字符集的协会来决定。如大名鼎鼎的ASCII字符集,含有128个字符,就是一个典型的字符集。
字符集编码:将字符集中的字符映射为特定的字节或者字节序列,它表示的是一种规则。通常特定的字符集采用特定的编码方式。即一种字符集对应一种字符编码,如: ASCII、ISO-8859-1、GB2312、GBK都是表示了字符集又表示了对应的字符编码,但Unicode字符集是特例,它对应的字符编码有:UTF-8、UTF-16、UTF-32等,mysql中常用的是UTF-8,其他两种不常用。
二、mysql数据库的字符集和字符集编码
mysql字符集对应的编码字节数:
utf-8(utf-8mb3)和utf-8mb4的区别:
1、utf-8也叫utf-8mb3: 代表一个字符只需要1~3个字节。
2、utf-8mb4: 代表一个字符需要使用1-4个字节,也就是我们平常说的真正的utf-8编码。
区别: 在MySQL数据库中,utf-8是utf-8mb3的别名,它是使用1~3个字节来表示一个字符的,如果需要使用4个字节表示一个字符的,如存储emoji表情包,需要使用utf-8mb4编码方案。
对于mysql数据库中常见的字符集编码来说,ASCII只用于特定的场合,GBK和GB 2312只能用于中英文混合环境,因此在我们立志于国际化的公司,肯定是只能使用unicode编码,为了更好的支持emoji表情,所以我们公司的数据库绝大多数(之所以不是全部,是因为有些老系统之前没有给出字符集编码的规范)使用utf-8mb4,建库建表默认强制使用utf-8mb4。