关于后台存储emjon表情的前前后后

换了新的工作环境,刚到公司接触项目后,就要解决一个bug,ios端设置姓名,要求可以存emjon表情。

什么是emoji表情?

emoji (词语) 编辑 

绘文字(日语:絵文字/えもじ emoji)是日本在无线通信中所使用的视觉情感符号,绘指图画,文字指的则是字符,可用来代表多种表情,如笑脸表示笑、蛋糕表示食物等。
在NTTDoCoMo的i-mode系统电话系统中,绘文字的尺寸是12x12 像素,在传送时,一个图形有2个字节。Unicode编码为E63E到E757,而在Shift-JIS编码则是从F89F到F9FC。基本的绘文字共有176个符号,在C-HTML4.0的编程语言中,则另增添了76个情感符号。
最早由栗田穰崇(Shigetaka Kurita)创作,并在日本网络及手机用户中流行。
自苹果公司发布的iOS 5输入法中加入了emoji后,这种表情符号开始席卷全球,目前emoji已被大多数现代计算机系统所兼容的Unicode编码采纳,普遍应用于各种手机短信和社交网络中。
—摘自《百度百科》

一、关于数据库的操作

那就存呗,直接将前台的数据往数据库存,报错:

Incorrect string value: ‘\xF0\x9F\x98\x82\xF0\x9F…’ for column ‘question’ at row 1

上网查资料后,说是要设置数据库编码格式表编码格式字段编码格式,一般设置为“utf-8”,这对于汉字来说足够了,在mysql中utf8占3个字节,但是对于移动端的特殊表情符号来说,三个字节是不够的,需要四个字节,即使用utf8mb4的编码格式,向下兼容utf8。这个时候我们使用utf8就会出现‘\xF0\x9F\x8F\x80’的问题。

解决方案:

  1. Mysql 版本的限制,Mysql 5.5.3之前的版本,支持的utf8为3字节的,Mysql 5.5.3之后的版本支持utf8mb4。本地数据库进行升级操作,详细可自行百度。
  2. 修改mysql的配置文件,windows下的为my.ini(linux下的为my.cnf),修改的内容都一样。
[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

3.将数据库中对应的字段,改为utf8mb4_general_ci

ALTER DATABASE database_test CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE table_name CHANGE cloumn_name cloumn_name VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

4.修改项目中的连接数据库的url,将characterEncoding=utf-8去掉,此步骤一定要进行。

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值