Laravel 保存 emoji 表情

2022-05-11 16:33:02 浏览数 (1)

最近写接口时,有个新增文章的接口报错了,报错的信息为:

代码语言:php复制
...
SQLSTATE[HY000]: General error: 1366 Incorrect string value: 'xF0x9Fx98x8BxF0x9F...' for column 'content' at row
...

因为那个页面有富文本编辑器,所以很快的推断出了这是因为数据里有 emoji 表情导致的报错

解决办法如下:

1.设置该字段的字符编码

代码语言:php复制
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2.修改 Laravel 配置

config/database.php

代码语言:php复制
'mysql' => [
    'driver'    => 'mysql',
    'host'      => env('DB_HOST', 'localhost'),
    'port'      => env('DB_PORT', '3306'),
    'charset'   => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix'    => '',
    'strict'    => true,
    'engine'    => null,
]

首发自:Laravel 保存 emoji 表情 - 小鑫の随笔

0 人点赞