评论

关于微信昵称中Emoji表情乱码问题解决方案

关于微信昵称中Emoji表情乱码问题解决方案

问题描述

我相信每个人在刚接触小程序开发的时候都会遇到这个问题:小程序用户授权的时候,如果微信昵称里面带有Emoji表情的昵称,保存到数据库里,在界面显示的时候就乱码了。

当然微信昵称乱码只是一个最常遇到的场景,在其他包含Emoji表情的地方,该问题都会暴露出来。

如下图所示:

正常文本

乱码文本

问题解决方案

在本文我会总结两种解决方案,第一种解决方案是我在之前查阅相关文档,亲测实现的,当时在采用第二种解决方案的时候遇到了问题,采用的不得已方案,后面等第二种方案亲测实现后,才发现第二种方案是真香。

第一种解决Emoji表情乱码的方案

将包含该Emoji表情的信息encodeURIComponent编码,在使用的地方,在decodeURIComponent解码,这种方案已在小程序 “垃圾分类黑板报”中亲测,如下图所示:

这种方案不算好,仅仅是解决了乱码的问题,带来了代码的额外编码解码开支。

第二种解决Emoji表情乱码的方案

按照我采用Mysql数据库,PHP YII2框架来描述

两步走

  1. 在数据库连接的时候采用utf8mb4,这一点非常重要,很容易遗漏。
  2. 数据库编码和表格编码以及对应的存储字段都应采用utf8mb4编码

关于第一步在代码示例如下

该方案在小程序"群黑板报"中,亲测可用。

这种方案是最完美的方案,没有带来额外的代码开支,也是目前网上能搜到的推荐使用方案,但是在实操过程中,有时候会因为数据库版本或者个人设置导致不生效,但是该方案确实香。

部分文章推荐

下面推荐几篇文章用来普及下为什么正常情况下Emoji表情存储到数据库里面就会乱码了

最后一次编辑于  2019-12-11  
点赞 3
收藏
评论

3 个评论

  • 张生
    张生
    2019-12-11

    我来支持你的。

    2019-12-11
    赞同 1
    回复 1
    • 村姑翠花
      村姑翠花
      2019-12-11
      蟹蟹蟹蟹,这么捧场。。。
      2019-12-11
      回复
  • 星尘
    星尘
    2019-12-13

    求一个java+mysql可用的

    2019-12-13
    赞同
    回复 1
    • 村姑翠花
      村姑翠花
      2019-12-13
      我下面有个文章推荐链接,这个是用的java语言给出了另一个解决方案,可以移步 看看。
      2019-12-13
      回复
  • one for all
    one for all
    2019-12-11

    来来回回都是这些,水过来水过去的

    2019-12-11
    赞同
    回复 1
    • Terry
      Terry
      2019-12-11
      哈哈。赞一个
      2019-12-11
      回复
登录 后发表内容