mysql存储emoji表情

问题:

微信的昵称可以含有emoji表情,把这样的昵称存储到数据库时出现了这个异常:

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x95  ...' for column 'nickName' at row 1

分析:

简单的说,就是utf-8字符集不够用了,emoji超过了utf-8的范围

解决方案:

就是要使用新的字符集utf8mb4(Mysql 5.5.3之后的版本才支持utf8mb4),

有两种方案

1.(网上找的,没试过,不知道有没有用)

修改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

将数据库中对应的字段改为

     字符集:utf8mb4

     排序规则:utf8mb4_general_ci

修改项目中的连接数据库的url,将characterEncoding=utf-8去掉

2.(适用于使用阿里巴巴druid连接池的,亲测有效)

同样需要将数据库中对应的字段改为

     字符集:utf8mb4

     排序规则:utf8mb4_general_ci

项目中的连接数据库的url保留characterEncoding=utf-8

spring配置文件spring-common.xml(文件名可能不同)连接池配置增加一行

   

...

你可能感兴趣的:(mysql存储emoji表情)