MySQL utf8转utf8mb4(java.sql.SQLException: Incorrect string value...)

今天将爬虫数据添加到数据库时出现了这个错误:

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\x82' for column 'spda_content' at row 1

错误原因是因为:mysql中utf8字符最大字节为3字节,但是某些unicode字符转成utf8编码之后有4个字节,所以需要将现有表改为utf8mb4编码。

首先需要修改my.ini文件

在相应地方添加如下代码:

[client]

default-character-set=utf8mb4
port=3306

[mysql]

default-character-set=utf8mb4

[mysqld]

port=3306
character-set-client-handshake = FALSE
character-set-server=utf8mb4
#collation-server = utf8mb4_unicode_ci //如果改这个tomcat会连不上数据库,不知道为什么,只能注释了。
init_connect='SET NAMES utf8mb4'//如果不在此设置,就需要在代码中连接数据库时加上了。

在将mysql中从库到表都编码改为utf8mb4,需要mysql5.5以上才支持utf8mb4,具体操作就不多说了,可以手打命令,也可以通过像类似mysql-front这样的工具。

最后要改的就是本地程序,首先需要把jdbc驱动包换成最新的,至少要5.1.x;
然后需要连接数据库路径改为如下:

jdbc:mysql://localhost:3306/spider?characterEncoding=utf8

必须要加上characterEncoding=utf8,这样插入查询数据库时会自动的转为utf8mb4,否则还会是乱码

其他的就不用变了,utf8mb4向下兼容utf8,只是能表示更多的字节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值