解决数据库插入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。
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
    </dependency>
3.将表中的对应字段,其字符集修改成utf8mb4。
4.最后修改druid数据源的配置,增加一行:
    <property name="connectionInitSqls" value="set names utf8mb4;"/>
5.检查下jdbc连接串的设置:
    jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8
    这里要注意:有人建议删除useUnicode=true&characterEncoding=utf8,但好像我这里会发生保存数据时发生乱码的现象。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值