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

MySQL评论693字数 1267阅读模式

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日
  • 本文为夏日阳光原创文章,转载请务必保留本文链接:https://www.pieruo.com/89.html
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证