- 问题
- 原因
- 出现场景
- 解决方式
问题
java报错堆栈
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\x82' for column 'spda_content' at row 1
原因(不严谨)
utf8以4个字节存储汉字,而一些特殊符号的字节长度可能超过四个
出现场景
对于编码是utf8的字段,传入了含特殊符号的数据
解决方式
- 修改数据库类型
mysql> alter database xxx CHARACTER SET utf8mb4;
-
修改参数设置

-
修改字段编码

- 重启数据库(数据库大的话,很耗时,生产环境谨慎使用)

- 确认下
重启完成后,对应数据库的字符集由utf8变为utf8mb4即可
博客主要围绕Java报错堆栈问题展开。原因是UTF8以4字节存汉字,特殊符号字节长度可能超4字节。出现场景为UTF8编码字段传入含特殊符号数据。解决方式有修改数据库类型、参数设置、字段编码,还可重启数据库,重启后字符集变为utf8mb4。
2190





