emoji无法显示_解决应用中无法存储及显示Emoji表情的问题

一、问题描述,公司开发的应用中,有些内容是用户可以自己输入的,比如文章的评论,客户模块的客户姓名,客户备注等等,这些内容用户都是可以自己随意输入的,在使用的过程中发现,当客户输入emoji表情的时候,前端都显示成了????,查看数据库,发现数据库中存储的内容也是????。

二、问题分析

存储表情符号出现????,很容易想到,出现问号,肯定是乱码了,既然是乱码那么肯定是编码格式问题,那么我们就去查看什么地方的编码格式有问题。

首先要确定的是数据库的编码格式,数据库如果编码不对,肯定是不行的。由于我使用的是mysql数据库,调查的过程中,发现mysql确实是有编码问题的。先理解几个名词,UNICODE,UTF-8,可以百度,暂时不做过多解释。其中可以简要说下,UNICODE是通过4个字节存储信息,所以理论上是所有的字符UNICODE都可以编码出来,UTF8 就是实现UNICODE编码的一种实现,但是mysql在存储UTF8的编码时,使用的是3个字节,而emoji表情是需要4个字节才可以存储,所以存储表情的时候就出现了乱码即?,为了解决这个问题,mysql又增加了一个编码格式utf8mb4,这个编码就是传统意义的UTF8了。所以很明显

最终是在mybaties中增加了一句执行语句,修改了编码格式:

connectInitSqls=SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;设置数据库连接中使用的编码格式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值