Yii2 支持微信昵称中的emoji表情

现在很多微信昵称中带有emoji表情,但是在做项目的时候遇到无法保存到数据库的问题。

解决这个问题需要从两方面入手:

1、Mysql 其实mysql里的utf8编码并不是真正的Utf8。因为Mysql的Utf8每个字符只支持三个字节,而真正的Utf8是每个字符四个字节。Mysql一直没有修复这个问题,而是新增了一种字符编码utf8mb4。所以mysql里面最好不要使用utf8编码,而是直接使用utf8mb4编码。

2、MySQL表和字段编码都修改后,在Yii2数据库链接配置文件里还要修改下编码模式为utf8mb4如下

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=',
    'username' => '',
    'password' => '',
    'charset' => 'utf8mb4',
];