mysql: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x90'

插入数据出现问题,因为包含了特殊字符。

现象:

插入的数据中如果含有某些特殊字符,会导致插入数据失败,例如字符串”测试**插入数据。。。“,在console中insert是正常的,但是使用java代码insert的时候报错。

原因:

mysql utf-8编码最多只支持三个字节,而有的unicode字符转成utf8编码之后有4个字节,所以插入失败。

解决方案:

修改Content字段为MEDIUMBLOB(原来是varchar),并且把SELECT语句修改成

SELECT CAST(Content AS CHAR CHARACTER SET utf8) AS Content ....

INSERT语句不需要修改

也有说升级mysql,用utf8mb4编码