微信小程序输入的emoji字符如何保存和显示(ThinkPHP + MySQL 5.1 不需要升级数据库!)

博主分享了解决微信小程序emoji在MySQL 5.1中存储和显示的问题,避免升级数据库,通过转换编码实现。文章介绍了尝试的三种方法,最终采用入库时转换为xXXXX或/uXXXX形式,出库后转换回emoji字符的方法,并提供了相关代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个问题困扰了我很久,网上搜索了N多材料,也没有头绪,我把我的尝试路径发出来

方法1.使用可读字符替换位emoji字符存储,前端显示时再将可读字符替换为html相应的emoji图片;

方法2:使用MySQL数据库5.5版本以上,utf8mb4方式存储和读取,前端使用emoji编码用微信自带的emoji图片显示;

方法3:不升级数据库,存储时使用字符串替换,读取后替换回来用微信自带的emoji图片显示.

 

经过分析,

方法2效率最高,但是要升级数据库,风险太大,对业务影响不可预估,因此对我来说此为下策,

方法1难度不大,但是需要找到小程序可用的前端js和emoji图片库,没有的话就需要自己造轮子,时间代价大,放弃,最后只能使用方法3.

方法3:入库时使用emoji与str转换函数,转成xXXXX或者/uXXXX的形式,现成的库函数一大把,读取数据库时转换回来成为emoji字符,但是问题出现了,转换之后微信还是显示不可识别字符,喵了个咪的!网上查询无果之后,于是我走了弯路,打算采用方法2,方法2都搞完了,服务器被我折腾一宿,最后一步又卡住了,字段全为emoji字符时入库根本存不进去,网上说还要折腾数据库,我觉得算了,别显示没解决服务器被我搞挂了.

山穷水尽疑无路,柳暗花明又一村.

百度后找到这篇文章:

https://www.aiyingli.com/45083.html(小程序丨昵称里的表情符号不能正常显示)

感谢网友的留言,终于看到了曙光,搞明白了,原来是字符编码不同造成的,把字段出库后,先讲str转换为emoji_softbank编码,然后再转换为emoji_unified编码编码格式就ok了,处理结束,完活儿.

不用升级数据库, 存储之后数据库是这个样子:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值