在微信公众平台开发者模式的自动回复里加入emoji表情,需要什么PHP方法来处理?

用软银版的emoji,如雪人的小图标,“\ue048”\x0d\x0a\x0d\x0a公众号PHP编写的接口文件,回复“\ue048”是不行的。需要转码,\x0d\x0a\x0d\x0a//content\x0d\x0aunicode2utf8("\ue02d")\x0d\x0a\x0d\x0a//转码函数\x0d\x0afunctionunicode2utf8($str){//unicode编码转化,用于显示emoji表情\x0d\x0a$str='{"result_str":"'.$str.'"}'//组合成json格式\x0d\x0a$strarray=json_decode($str,true)//json转换为数组,利用JSON对\uXXXX的支持来把转义符恢复为Unicode字符\x0d\x0areturn$strarray['result_str']\x0d\x0a}

1、使用utf8mb4字符集

如果你的mysql版本>=5.5.3,你大可直接将utf8直接升级为utf8mb4字符集

这种4字节的utf8编码可完美兼容旧的3字节utf8字符集,并且可以直接存储emoji表情,是最好的解决方案

至于字节增大带来的性能损耗,我看过一些评测,几乎是可以忽略不计的

2、使用base64编码

如果你因为某些原因无法使用utf8mb4的话,你还可以使用base64来曲线救国

使用例如base64_encode之类的函数编码过后的emoji可以直接存储在utf8字节集的数据表中,取出时decode一下即可

3、干掉emoji表情

emoji表情是个麻烦的东西,即使你能存储,也不一定能完美显示。在iOS以外的平台上,例如PC或者Android。如果你需要显示emoji,就得准备一大堆emoji图片并使用第三方前端类库才行。即便如此,还是可能因为emoji图片不够全而出现无法显示的情况在大多数业务场景下,emoji也不是非要不可的。我们可以适当地考虑干掉它,节约各种成本

经过一番苦苦的google,终于找到靠谱能用的代码:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11647719.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存