最近一直在做微信相关项目,需要在’我的’里显示用户微信头像和昵称,遇到了带有Emoji表情的昵称一直也存不进去,下边说明解决方法.
1.mysql数据库版本在5.5以上,不然是不支持的呦.
我用的是8.0.11,实测5.7.26可食用.
使用以下语句查询数据库版本.
select version();
2.更改数据库,表,以及需要存储emoji的字段编码方式为utf8mb4.
# 对数据库:
ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# 对表:
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 对存储emoji表情的字段:
ALTER TABLE 表名 CHANGE 字段名 字段名 VARCHAR(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
utf8mb4向下兼容utf8,无乱码或其他数据丢失的形式出现。可以放心修改,不放心的话可以先备份下数据再做修改.
3.修改mysql数据库配置,这里以windows为例.
修改my.ini,添加如下配置
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server=utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
修改之后以管理员身份打开CMD重新启动mysql.
停止mysql:net stop mysql
启动mysql:net start mysql
4.修改数据库驱动.
这一步也是我研究了小半天的一步,原来项目中使用的一直是mysql-connector-java-5.1.10-bin.jar
一直报错字符串不匹配,灵机一动换了mysql驱动mysql-connector-java-8.0.18.jar,测试,bingo!JAR包就不贴了,Maven就可以弄到.
对了,查了好多教程都说删掉链接里的characterEncoding=utf8,试了一下,加不加都是好用的,所以我还是留着了.
url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
user=root
password=123456
driver=com.mysql.cj.jdbc.Driver