现在很多微信昵称中带有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', ];