[10501]SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xF0\x9F\xA7\x9A\xE2\x80...' for column 'content' at row 1
super
2021-09-07 15:53
7788
[ error ] [10501]SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xF0\x9F\xA7\x9A\xE2\x80...' for column 'content' at row 1[/www/wwwroot/super/thinkphp/library/think/db/Connection.php:764]
Mysql 1366 错误是因为插入的数据编码与数据表设置编码冲突所导致的。
通过日志发现,是由于插入的内容有特殊表情,而数据表的格式,是utf8_general_ci规则的。
解决方式:
1. 在此字段插入数据时,将数据进行 base64编码存入数据库。用的时候在decode解码后显示
最常见的是,做微信开发时,客户的微信昵称千奇百怪的,各种符号,一定要做处理才存进数据库
2. 去除特殊符号
3. 修改数据库编码
众所周知,mysql的utf8mb4才是真正的utf8编码。
在网上看到一些文章说,将数据库的字符集改成utf8mb4就可以存储表情了。
其实在前两年我做过一个实验发现,修改编码后有某些表情还是无法存入数据库= . = (有可能是表情迭代太快啦?)
0 条讨论