utf8mb4与utf8的区别

Posted zhaomeizi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了utf8mb4与utf8的区别相关的知识,希望对你有一定的参考价值。

今天在测试小程序保存表情时,数据库插入数据时报错ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: ‘xF0x9Fx98x8BxF0x9F...‘ for column ‘post‘ at row 1这个错误,Google了下发现原来是因为数据库编码问题导致的,原因在于我们的评论数据中存在emoj表情,而这些表情是按照四个字节一个单位进行编码的,而我们通常使用的utf-8编码在mysql数据库中默认是按照3个字节一个单位进行编码的,正是这个原因导致将数据存入mysql数据库的时候出现错误!

 

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。

理论上讲, UTF-8 格式使用一至六个字节,最大能编码 31 位字符。最新的 UTF-8 规范只使用一到四个字节,最大能编码21位,正好能够表示所有的 17个 Unicode 平面。

 

 

参考网址:

https://blog.csdn.net/hzw19920329/article/details/55670782

https://developers.weixin.qq.com/community/develop/doc/000c4444fb43a0e683e621c445b000?highLine=Incorrect%2520string%2520value

以上是关于utf8mb4与utf8的区别的主要内容,如果未能解决你的问题,请参考以下文章

utf8mb4与utf8的区别

Mysql中的编码“utf-8”和”utf8mb4″的区别与使用

utf8mb4和utf8有啥区别

utf8和utf8mb4区别

utf8和utf8mb4区别

utf8和utf8mb4的具体区别有哪些?