utf8mb4 字符集(4字节 UTF-8 Unicode 编码)

来源:互联网 发布:兰州网络教育学生平台 编辑:程序博客网 时间:2024/05/17 22:13

最近做项目遇到APP评论中有 emoji 表情符号,结果导致插入 MySQL 数据库失败,找到 MySQL 官方相关内容,这里斗胆翻译一下。在翻译过程中有些不明白的地方,如BMP、collation等,都找到官方文档,给出了链接,大家可以链接参考。

原文:https://dev.mysql.com/doc/refman/5.6/en/charset-unicode-utf8mb4.html?spm=5176.2020520165.110.53.AlPmXp

The utf8mb4 Character Set (4-Byte UTF-8 Unicode Encoding)

utf8mb4 字符集(4字节 UTF-8 Unicode 编码)

UTF-8字符集每个字符最多使用三个字节,并且只包含基本多语言面 (Basic Multilingual Plane,BMP)字符。

utf8mb4 字符集使用最多每字符四个字节支持补充字符:

  • 对于 BMP字符 UTF8 和 utf8mb4 具有相同的存储特性:相同的代码值,相同的编码,相同的长度。
  • 对于补充字符,UTF8不能储存所有的字符,而utf8mb4需要四个字节来存储它。因为UTF8不能存所有的字符,你的 utf8 列中都没有补充字符,因此从旧版本的MySQL UTF8 升级数据时 不用担心字符转换或丢失数据。

utf8mb4 是 utf8 的超集,所以像下面的连接字符串操作,其结果字符集是 utf8mb4  排序规则(一组规则,定义如何对字符串进行比较和排序)是 utf8mb4_col:

SELECT CONCAT(utf8_col, utf8mb4_col);
同样,下面的 WHERE 子句中的内容比较根据 utf8mb4_col 规则:
SELECT * FROM utf8_tbl, utf8mb4_tblWHERE utf8_tbl.utf8_col = utf8mb4_tbl.utf8mb4_col;

提示: 要使用 utf8mb4 节省空间,使用 VARCHAR 替换 CHAR否则,MySQL必须为使用 utf8mb4字符集的列的每一个字符保留四字节的空间,因为其最大长度可能是四字节。例如,MySQL必须为一个使用 utf8mb4 字符集的  char(10)的保留40字节空间

相关阅读:

utf8_unicode_ci与utf8_general_ci的区别

====================文档信息=======================

版权声明:非商用自由转载-保持署名-注明出处

署名(BY) :testcs_dn(微wx笑)

文章出处:[无知人生,记录点滴](http://blog.csdn.NET/testcs_dn)

==============欢迎关注我的个人微信订阅号(微wx笑)==========

2 1