mysql版本为5.7,已经将数据库字符集设置为utf8mb4了,如图:
字段的字符集也已经改了:
`content` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '评论内容'
但是页面提交过来的emoji表情还是无法保存成功,报错信息为:
General error: 1366 Incorrect string value: '\xF0\x9F\x98\xAF' for column 'content'
页面上的编码用的UTF-8,框架用的是laravel,请大神指点哪里的配置还有问题?
记得跟数据库的版本有关系,还得设置utf8mb4 以及 utf8mb4_general_ci
要存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,一般配置数据库的地方都有设置。
如果没有的话php连接数据库后先执行一次查询
set names utf8mb4