mysql存储用户昵称_mysql 微信用户昵称 emoji 完整保存 - 人人都是架构师

微信用户昵称现在丰富多样,一些个性的名称中经常包含有特殊字符,以及emoji表情。起先,我总以为mysql只能保存纯文本数据。但其实mysql(5.7版本)已非常强大,完整保存微信用户昵称(emoji表情)已不在话下。

起先,我的项目是无法保存这些含有emoji表情的昵称。为了鲜明的对比前后我做出的调整,先来看看之前的状况。

1、mysql表字段定义

`third_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '用户第三方账号昵称',

字段类型为utf8

2、mysql数据库连接字符串

jdbc连接使用的编码格式也为utf8

3、微信昵称

c2830c24b5ebca2bb62d404e64bac12d.png

这昵称中有emoji表情的小眼睛在瞅着我。

4、保存出错

Caused by: java.sql.SQLException: Incorrect string value: 'xF0x9Fx91x80xE5xBC...' for column 'third_name' at row 1

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)

接下来,我们看一下可以保存后的调整。

① mysql表字段定义为utf8mb4

`third_name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '用户第三方账号昵称',

注意改成了**“utf8mb4”**,不再是utf8,主要是支持的字节数不同。

MySQL在5.5.3版本之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。其实,utf8mb4是utf8的超集,理论上原来使用utf8,然后将字符集修改为utf8mb4,也会不会对已有的utf8编码读取产生任何问题。当然,为了节省空间,一般情况下使用utf8也就够了。

想要了解的更多,请参照浅谈MySQL中utf8和utf8mb4的区别

② mysql数据库连接字符串去掉编码方式

③ 保存后效果

使用Navicat查看的效果如下:

567e609abe946e7ee63f84bc9623e111.png

网页上效果如下,小眼睛可以正常显示:

e13bfbe5f8f9e963a2135ec449790af1.png

关注 沉默王二 公众号,期待与你心灵上的交流。

b1693c3eca7fa44a6c2cb22f35468b11.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值