mysql无法保存emoji表情

mysql版本为5.7,已经将数据库字符集设置为utf8mb4了,如图:
clipboard.png

字段的字符集也已经改了:

`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,请大神指点哪里的配置还有问题?

阅读 8.9k
10 个回答

数据库连接要设置为utf8mb4,一般配置数据库的地方都有设置。

如果没有的话php连接数据库后先执行一次查询

set names utf8mb4

要存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后支持存储表情符号。

新手上路,请多包涵

楼主解决了吗?我也是遇到相同的问题 各个设置跟网上说的都一致了,但是就是存储不了

新手上路,请多包涵

php服务端也要设置utf8mb4字符集,所以laravel框架在连接数据库请求的时候,也要改mysql配置文件,不然仅仅改mysql是无法生效的

我在做商品详情时添加表情也会报这个错,
然后修改数据库相对应的表的对应字段字符集就可以
clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题