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
以上是关于utf8mb4与utf8的区别的主要内容,如果未能解决你的问题,请参考以下文章