MySQL java.sql.SQLException: Incorrect string value ……
//注: 里面的*不是导致问题的特殊字符,因为特殊字符无法显示,总之是某个转成utf8后有4bytes的字符
背景:
数据库编码,建表编码,Content字段编码都设置为utf8,collation是默认的utf8_default(也尝试过修改为其他的,未果,似乎不是collation的问题)
解决方案:
修改Content字段为MEDIUMBLOB(原来是MEDIUMTEXT),并且把SELECT语句修改成SELECT CAST(Content AS CHAR CHARACTER SET utf8) AS Content ....INSERT语句不需要修改,测试ok
参考资料
http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html CAST函数用法 http://bugs.mysql.com/bug.php?id=30131 07年讨论到10年,结论是: Not a bug http://bit.ly/Ao3iJO 问题可能是因为某些unicode字符转成utf8之后变成了4个字节