MySQL的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储。MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。
一、修改数据库的字符集
CREATE DATABASE cms DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
二、修改数据库字段的字符集
ALTER TABLE t_article MODIFY content varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
查看数据库字段的字符集:
show full columns from t_article;
结果如下:
+--------------+---------------+--------------------+------+-----+---------+----------------+---------------------------------+--------------+ | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment | +--------------+---------------+--------------------+------+-----+---------+----------------+---------------------------------+--------------+ | id | int(10) | NULL | NO | PRI | NULL | auto_increment | select,insert,update,references | | | content | varchar(2000) | utf8_general_ci | YES | | NULL | | select,insert,update,references | | | create_time | datetime | NULL | YES | | NULL | | select,insert,update,references | 创建时间 | | update_time | datetime | NULL | YES | | NULL | | select,insert,update,references | 更新时间 | +--------------+---------------+--------------------+------+-----+---------+----------------+---------------------------------+--------------+