MySQL 无法存储 emoji 表情解决方法

MySQL评论580阅读模式

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也就够了。

MySQL 无法存储 emoji 表情解决方法

一、修改数据库的字符集

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 | 更新时间      |
+--------------+---------------+--------------------+------+-----+---------+----------------+---------------------------------+--------------+

本文已通过「原本」原创作品认证,转载请注明文章出处及链接。
MySQL最后更新:2022-11-7
夏日阳光
  • 本文由 发表于 2019年7月30日 22:28:02
  • 本文为夏日阳光原创文章,转载请务必保留本文链接:https://www.pieruo.com/89.html
匿名

发表评论

匿名网友 填写信息