WD1X.COM - 问答一下,轻松解决,电脑应用解决专家
主板显卡CPU内存显示器
硬盘维修显卡维修显示器维修
注册表系统命令DOS命令Win8
存储光存储鼠标键盘
内存维修打印机维修
WinXPWin7Win11Linux
硬件综合机箱电源散热器手机数码
主板维修CPU维修键盘鼠标维修
Word教程Excel教程PowerPointWPS
网络工具系统工具图像工具
数据库javascript服务器
PHP教程CSS教程XML教程

mysql 微信用户昵称 emoji 完整保存

更新时间:2021-04-08 10:13 作者:沉默王二点击:
微信用户昵称现在丰富多样,一些个性的名称中经常包含有特殊字符,以及emoji表情。起先,我总以为mysql只能保存纯文本数据。但其实mysql(5.7版本)已非常强大,完整保存微信用户昵称(emoji表情)已不在话下。
 
起先,我的项目是无法保存这些含有emoji表情的昵称。为了鲜明的对比前后我做出的调整,先来看看之前的状况。
 
1、mysql表字段定义
`third_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '用户第三方账号昵称',
 
字段类型为utf8
 
2、mysql数据库连接字符串
<!-- Connection Info -->
<property name="url" value="${url}?useUnicode=true&amp;characterEncoding=utf8&amp;" />
 

 
jdbc连接使用的编码格式也为utf8
 
3、微信昵称
 
这昵称中有emoji表情的小眼睛在瞅着我。
 
4、保存出错
Caused by: java.sql.SQLException: Incorrect string value: '馃憖寮...' 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数据库连接字符串去掉编码方式
<!-- Connection Info -->
<property name="url" value="${url}" />
 

 
③ 保存后效果
使用Navicat查看的效果如下:
 
 
网页上效果如下,小眼睛可以正常显示:
 

PS注意事项:这个操作做完要重启数据库,不然不生效。

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
你可能感兴趣的内容