mysql版本为5.7,已经将数据库字符集设置为utf8mb4了,如图:
字段的字符集也已经改了:
`content`textCOLLATEutf8mb4_unicode_ciNOTNULLCOMMENT'评论内容'
但是页面提交过来的emoji表情还是无法保存成功,报错信息为:
Generalerror:1366Incorrectstringvalue:'\xF0\x9F\x98\xAF'forcolumn'content'
页面上的编码用的UTF-8,框架用的是laravel,请大神指点哪里的配置还有问题?
数据库连接要设置为utf8mb4,一般配置数据库的地方都有设置。
如果没有的话php连接数据库后先执行一次查询
setnamesutf8mb4
要存emoji表情的字段的字符集改了吗?
字符集是:utf8mb4
utf8mb4_unicode_ci是字符集排序规则...
你要确定你的字符集改了..并且,laravel的里的.env文件要把字符集改成
.env详细配置:
DB_CONNECTION=mysql//数据库类型DB_HOST=localhost//数据库地址DB_PORT=3306//数据库端口DB_DATABASE=test//数据库名DB_USERNAME=root//数据库用户名DB_PASSWORD=//数据库密码DB_CHARSET=utf84mb4//数据库字符集DB_COLLATION=utf8mb4_general_ci//数据库字符集排序规则
记得跟数据库的版本有关系,还得设置utf8mb4以及utf8mb4_general_ci
utf8mb4以及utf8mb4_general_ci就可以了.
如果字符集不好搞定的话你可以把入库的东西转义啊。base64什么的
修改数据表的字符集为utf8mb4
设置php链接MySQL的字符集为utf8mb4
字符集设置utf8mb4
还有好像5.7后支持存储表情符号。