解决数据库插入emoji表情符号问题

在新项目的开发中,突然遇到一个问题数据插入数据库报错误,经过问题的复现以及调试发现,当数据插入到数据库的时候报如下错误:

Incorrect string value: '\xF0\x9F\x99\x88\xF0\x9F...' for column 'nickname' at row 1

 通过问题复现以及日志解析后发现:原来测试人员在输入的时候插入了表情符号emoji字符,根据查找资料解决方案如下:

主要针对MySql数据库和阿里的Druid数据连接池

1.MySQL的版本不能太低,低于5.5.3的版本不支持utf8mb4编码。select version();
2.JDBC驱动版本不能太低,mysql connector版本高于5.1.13。
    
        mysql
        mysql-connector-java
        5.1.38
    
3.将表中的对应字段,其字符集修改成utf8mb4。
4.最后修改druid数据源的配置,增加一行:
    
5.检查下jdbc连接串的设置:
    jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8
    这里要注意:有人建议删除useUnicode=true&characterEncoding=utf8,但好像我这里会发生保存数据时发生乱码的现象。

你可能感兴趣的:(数据库)