用户名称中包含表情符,存入数据库报错-Incorrect string value: '\xF0\x9F\x98\x83' for column
用户名称中包含表情符,存入数据库报错-Incorrect string value: ‘\xF0\x9F\x98\x83’ for column
- 其实只需将mysql的编码格式,改为 utf8,并且重启mysql服务。
- 重点:mysql没有重启,问题就会发现没有解决。
但是如果按照这个朋友的方法也是可以的,因为他去掉了 jdbc链接时候指定的编码,这样就可能存在问题的
已解决:Incorrect string value: ‘\xF0\x9F\x98\x83’ for column ‘nick_name’ at row 1; https://blog.****.net/java1703/article/details/102699859
摘要
先说自己的最后一步解决问题的方法,自己直接修改表的编码格式:alter database db_pico_bbs2 character set utf8mb4;
同时也证明了一个问题:修改表字段,设置为utf8mb4 影响不大,最后还是要同时修改表的编码格式。
解决路程
先通过百度,查找解决方案,结果,都是说修改数据库的编码,修改表的编码, 修改字段的编码,去掉jdbc连接的useUnicode=true&characterEncoding=utf-8配置。这里面没有对错,只有适合谁的环境,谁的运行后就是对的。自己走了不少弯路。总结一下,以后备用
正解过程
由于自己的项目是重构项目,所以库也是导原来的。原来的库的编码是lant1编码,这一点自己忽略了,最后将该库的编码设置为utf8mb4 ,字段设置为utf8mb4,jdbc链接zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useAffectedRows=true
最后就跑通了。