暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

关于mysql 存储 emoji报错

485





关于mysql 存储 emoji报错( Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F)value:'\xF0\x9F\x98\x84\xF0\x9F)






        最近在完成项目的功能模块时,由于支持用户发表帖子,帖子内容中带有表情,插入的时候报"Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F"的错误,博主也是百度了一番,网上大多教程都是说要将数据库跟表的编码换成utf8mb4_general_ci,但由于项目已经上线了,不能轻易修改库跟表的东西,所以重新换了一种方式,这样也能完美的解决这个问题。

 

先说说导致发错的原因吧

      mysql utf-8 编码储存的是 2-3个的字节,而emoji则是4个字节。


解决方法

       我们将需要存储表情的数据表的字段修改为utf8mb4_general_ci,整表跟整库的结构不动,只动对应的字段就行。

       由于博主使用的是原生的写法,所以在插入跟获取的数据的时候需要声明编码,代码如下:

    mysqli_query($selfCon, "set names utf8");
    mysqli_query($selfCon, "set names utf8mb4");

    这样便可以最小程度的减少对库跟表的影响,同时又兼容为emoji而出错。


    【图】来源于网络

    【文】https://hongzx.cn/home/blogShow/85

    Follow

    佛布朗斯基博客

    (佛布朗斯基)我是一只热爱编程的码农,已从事后端开发5年以上,也正因此,在日常工作学习中,会遇到蛮多问题需要解决,我希望透过记录,真实地将问题以及解决方法保存下来,更为高效地解决问题是我的初衷。


     

    文章转载自程序员技术笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论