- 关于微信昵称中Emoji表情乱码问题解决方案
问题描述 我相信每个人在刚接触小程序开发的时候都会遇到这个问题:小程序用户授权的时候,如果微信昵称里面带有Emoji表情的昵称,保存到数据库里,在界面显示的时候就乱码了。 当然微信昵称乱码只是一个最常遇到的场景,在其他包含Emoji表情的地方,该问题都会暴露出来。 如下图所示: 正常文本 [图片] 乱码文本 [图片] 问题解决方案 在本文我会总结两种解决方案,第一种解决方案是我在之前查阅相关文档,亲测实现的,当时在采用第二种解决方案的时候遇到了问题,采用的不得已方案,后面等第二种方案亲测实现后,才发现第二种方案是真香。 第一种解决Emoji表情乱码的方案 将包含该Emoji表情的信息encodeURIComponent编码,在使用的地方,在decodeURIComponent解码,这种方案已在小程序 “垃圾分类黑板报”中亲测,如下图所示: [图片] 这种方案不算好,仅仅是解决了乱码的问题,带来了代码的额外编码解码开支。 第二种解决Emoji表情乱码的方案 按照我采用Mysql数据库,PHP YII2框架来描述 两步走 在数据库连接的时候采用utf8mb4,这一点非常重要,很容易遗漏。 数据库编码和表格编码以及对应的存储字段都应采用utf8mb4编码 关于第一步在代码示例如下 [图片] 该方案在小程序"群黑板报"中,亲测可用。 [图片] 这种方案是最完美的方案,没有带来额外的代码开支,也是目前网上能搜到的推荐使用方案,但是在实操过程中,有时候会因为数据库版本或者个人设置导致不生效,但是该方案确实香。 部分文章推荐 下面推荐几篇文章用来普及下为什么正常情况下Emoji表情存储到数据库里面就会乱码了 关于微信授权获取昵称含Emoji表情引发的乱码问题总结 https://developers.weixin.qq.com/community/develop/article/doc/000c84d49d4058d35e99bbaef5b013
2019-12-11 - 关于微信授权获取昵称含Emoji表情引发的乱码问题总结
做过微信授权的小伙伴都可能会遇到获取用户昵称乱码问题,那是因为微信昵称中的含有SoftBank版本的Emoji表情。 如我的微信昵称: 正常显示为[图片]; 未处理Softbank及微信自定义表情显示为[图片]; 处理Softbank后显示为[图片]。 [图片] Emoji表情有很多种版本,其中包括Unified、DoCoMo、KDDI、SoftBank和Google,不同版本的Unicode代码并不一定相同。经研究,微信昵称中的Emoji表情截止目前(2019.12.10)已知支持三种版本: 1、SoftBank版本(网上一般称之为SB Unicode),如😂为E412; 2、Unified版本,如😂为1F602; 3、自定义表情版本,如[捂脸]。 举个例子,😂(喜极而泣)的各种编码如下: SoftBank:0000E412 Unified:0001F602(U+1F602) DoCoMo:0000E72A KDDI:0000EB64 Google:000FE334 UTF-8:F09F9882(%F0%9F%98%82) UTF-16BE:FEFFD83DDE02(\uD83D\uDE02) UTF-16LE:FFFE3DD802DE UTF-32BE:0000FEFF0001F602 UTF-32LE:FFFE000002F60100 Emoji表情代码表参阅:http://punchdrunker.github.io/iOSEmoji/table_html/index.html 对于SoftBank及微信自家定义的表情,需要做映射处理转换成标准的Unified版本的Emoji表情才能正常显示,否则就可能乱码。具体解决方案参见https://github.com/gzu-liyujiang/UnicodeEmoji SoftBank版本编码与Unified版本编码对应关系 { “E150”: “0001F68F”, “E030”: “0001F338”, “E151”: “0001F6BB”, “E152”: “0001F46E”, “E031”: “0001F531”, “E032”: “0001F339”, “E153”: “0001F3E3”, …省略… } SoftBank版本编码与标准Unicode编码对应关系 { “E150”: “\uD83D\uDE8F”, “E030”: “\uD83C\uDF38”, “E151”: “\uD83D\uDEBB”, “E152”: “\uD83D\uDC6E”, “E031”: “\uD83D\uDD31”, “E032”: “\uD83C\uDF39”, “E153”: “\uD83C\uDFE3”, …省略… } SoftBank版本编码与标准的Emoji字符表情的对应关系 { “E150”: “🚏”, “E030”: “🌸”, “E151”: “🚻”, “E152”: “👮”, “E031”: “🔱”, “E032”: “🌹”, “E153”: “🏣”, …省略… }
2019-12-11 - 模板消息接口使用图鉴
“为什么我们违规使用了模板消息?” “违规使用模板消息,会有什么处罚?” “官方提供的模板消息接口,哪些场景才是合规?” .... 以上是来自很多运营者常见的灵魂三问,为了更明确地帮助公众号进行重要业务通知,小编特意为大家准备了一份加码礼,带大家三分钟读懂模板消息接口。 模板消息到底是一种什么能力? 模板消息是在用户与公众号业务之间产生了实际交互行为后即时触达相关服务结果的接口能力。 模板消息怎样才是合规使用? 敲黑板,划重点,请大家注意模板消息使用的三点注意事项: 1、触达必要条件:必须是用户知情、授权并且主动参与; 2、接口属性:即时性; 3、下达样式:标题、关键词及下发内容都必须与实际使用场景匹配。 通篇理论,不如举例,下面重点给大家介绍一下常见不合规的案例,防止踩坑。 示例一 涉嫌广告营销类消息模板 此类模板消息具有广告营销性质,有诱导用户消费的意图,一经发现将会严厉惩处,轻则删除下架处理,重则封禁模板接口处理。此类模板消息举例如下: 1)使用任意模板下发活动营销推广类、消费优惠类、购物返利类、商品降价类内容,诱导用户购买消费,如: [图片] 2)使用模板下发优惠券领取、到账、过期,提醒用户使用的内容,涉及红包、卡券、优惠券、代金券、会员卡、积分类消息模板,由于此类模板消息容易用做营销,目前均不允许发,如: [图片] 【整改建议】请接入官方提供的卡券接口,实现券、卡,积分相关的功能。 3)使用模板下发产品推荐、课程推荐等内容,诱导用户参与报名或付费,如: [图片] 示例二 存在骚扰倾向的提醒类模板 此类模板消息频率推送过高,存在骚扰用户倾向,伤害用户体验的性质,我们会对该类模板消息监管,一经发现违规推送,或收到用户投诉,将会严厉惩处,轻则删除下架处理,重则封禁模板接口处理。此类模板消息举例如下: 1)使用模板下发流量不足提醒通知,如: [图片] 2)使用模板定期或不定期更新当前业务进展,如: [图片] 【整改建议】建议使用官方提供的一次性订阅功能或图文消息,详情链接可考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1500374289_66bvB 3)使用模板实现会话触达,此类需求不适用于模板消息,存在一定的言论风险及骚扰性质,目前均不允许发,如: [图片] 【整改建议】请后续使用官方提供的客服消息接口实现B端及C端的会话需求。 4)单独推送邀请参与评价类场景,存在一定的骚扰倾向,如: [图片] 【整改建议】请在支付/消费/交易结果类的模板消息中体现评价信息 5)使用任意模板消息下发无用户上行的祝福、相册、视频、笑话内容,诱导用户点击,如: [图片] 以上模板消息的使用图鉴,请各位开发者都收藏留存一份,如果排查发现公众号或小程序存在以上不合规的行为,请尽快下架该违规模板消息并及时作出相应整改。 目前平台模板消息接口处罚采用阶梯制,初次违规核实后仅删模板id以示警告,开发者可自行通过公共模板库添加,若再次违规我们会按照梯度处罚规则进行限制新增模板能力或封禁模板接口能力,直至账号完成整改,规范使用接口能力。
2020-03-18