Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > Mysql字符集utf8和utf8mb4

Mysql字符集utf8和utf8mb4详解

作者:碎月如割

文章介绍了MySQL中utf8和utf8mb4两种字符集的区别,包括编码方式、存储空间、索引长度以及支持的Unicode字符范围,同时,通过创建两个表并插入数据进行存储长度的比较,验证了上述理论

背景

1、MySQL在5.5.3版本之后增加了utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode;

2、utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了;

名词解释

关系

实践

为了验证上面的理论,创建如下两个表:它们的字符集分别为utf8和utf8mb4

CREATE TABLE `test_utf8` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(5) NOT NULL COMMENT '名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试utf8';

CREATE TABLE `test_utf8mb4` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(5) NOT NULL COMMENT '名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='测试utf8mb4';

向两个表中分别插入如下数据:

insert into test_utf8(name) values ('我是一颗小'), ('我是reo'), ('12345'), ('ggvdc');
insert into test_utf8mb4(name) values ('我是一颗小'), ('我是reo'), ('12345'), ('ggvdc');
insert into test_utf8mb4(name) values ('?????');

查看在两种字符集下的存储长度:

该图验证了上面3、4、5点理论;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文