码迷,mamicode.com
首页 > 其他好文 > 详细

utf8mb4与utf8的区别

时间:2018-10-30 11:25:00      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:编码   情况下   最大   mos   字节   除了   兼容   就是   sql数据库   

今天在测试小程序保存表情时,数据库插入数据时报错ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: ‘\xF0\x9F\x98\x8B\xF0\x9F...‘ 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的区别

标签:编码   情况下   最大   mos   字节   除了   兼容   就是   sql数据库   

原文地址:https://www.cnblogs.com/zhaomeizi/p/9875365.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!