解决 Incorrect string value: ‘\xF0\x9F\x98\xAD“,...‘ for column ‘commentContent‘ at row 1 报错

需求:解析excel表格,将excel中的数据插入到数据库中

        在将数据插入数据库中的时候遇到这样一个问题:

### Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xB1\xF0\x9F...' for column 'describe' at row 1
; uncategorized SQLException; SQL state [HY000]; error code [1366]; Incorrect string value: '\xF0\x9F\x90\xB1\xF0\x9F...' for column 'describe' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xB1\xF0\x9F...' for column 'describe' at row 1

         离谱的居然是解析表格的前300行没有出现这个错误,到了第301行的时候报了sql异常。首先想到的是会不会第301行的数据会不会有特殊的格式,结果发现并没有,只是数据内容不一样,并没有特殊的格式,排查了半小时,结果是因为数据库的编码不对。

        原因在于我们的表格数据中有的被解析成表情了,而这些表情是按照四个字节一个单位进行编码的,而我们通常使用的utf-8编码在mysql数据库中默认是按照3个字节一个单位进行编码的,正是这个原因导致将数据存入mysql数据库的时候出现错误。

我分为下面三个步骤来解决:

        (1)、查看mysql数据库的编码

show variables like 'character_set_database';

        如果是urf8需要修改为uft8mb4

        (2)、修改数据表的编码为utf8mb4

ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4;

                也可以直接使用图形化界面更改

        (3)、修改连接数据库的连接代码

         jdbc:mysql://localhost:3824/reggie?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
 修改为:
         jdbc:mysql://localhost/reggie

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rk..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值