1.为什么失败
设计数据库编码时一般设置utf8格式,utf8格式的字符集是3个字节,而emoji表情的字符集对应的是4个字节的,所以会保存失败。
2.很多教程的解决办法
百度一下,有很多解决办法,但是也就那么几种,比如数据库的编码改成utf8mb4,然后需要存储emoji表情的字段选择utf8mb4_general_ci。
更改数据库合适吗?
其实老七不建议这么操作原因有二
其一:这种处理方法,更改编码格式会有一系列的问题,如utf8mb4的性能可能比utf8系列的collations低,在索引中,对于文本类型的字段,utf8mb4可索引的字符少于utf8系列的collations
其二:使用base64编码的时候,一定要保证之前的数据也做了相应的转码,不然会导致数据丢失。
综上所述,不知道你会不会感觉很麻烦
3.解决办法
两行代码解决
你保存表情时,将获取的数据直接使用base64_encode($content)加密
从数据库取出时,用base64_decode($content)解密
简单不简单?喜欢的小伙伴给个点赞给个关注谢谢!