MySQL - utf8mb4字符集设置(解决emoji表情的记录无法保存问题)

时间:2023-01-11 14:39:24

1,emoji介绍

(1) emoji 就是表情符号,来自日语词汇“絵文字”(假名为“ えもじ”,读音即  emoji)。
(2)最早由栗田穰崇(Shigetaka Kurita)创作,并在日本网络及手机用户中流行。 自苹果公司发布的  iOS 5 输入法中加入了  emoji 后,这种表情符号开始席卷全球。
(3)目前  emoji 已被大多数现代计算机系统所兼容的  Unicode 编码采纳,普遍应用于各种手机短信和社交网络中。
MySQL - utf8mb4字符集设置(解决emoji表情的记录无法保存问题)

2,问题描述

最近使用  MySQL 作为一个移动应用的数据库。但是不管使用  Anroid 设备,还是  iOS 设备。只要插入包含有  emoji 表情符号的记录时就报错。
MySQL - utf8mb4字符集设置(解决emoji表情的记录无法保存问题)

3,问题原因

MySQL 我使用的是默认的  utf8 编码, UTF8 编码只支持  1-3 个字节。而  emoji 占有  4 个字节的存储空间,所以自然保存不了。
从  MYSQL5.5 开始,可支持  个字节  UTF 编码,只要将编码标记成  utf8mb4 即可。并且  utf8mb4 是兼容  utf8 的。

4,解决办法

(1)打开  MySQL 配置文件。( Windows 下是  my.iniLinux 下是  my.cnf

(2)修改如下配置,将编码改成  utf8mb4
[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
init-connect='SET NAMES utf8mb4'
character-set-server=utf8mb4

(3)重启  MySql  服务。以后新建的表和字段都会自动使用  utf8mb4  编码。但以前就存在的表和字段,我们还需手动改成  utf8mb4  编码。
MySQL - utf8mb4字符集设置(解决emoji表情的记录无法保存问题)
MySQL - utf8mb4字符集设置(解决emoji表情的记录无法保存问题)

(4)再次执行代码,可以发现包含  emoji 符号的记录已经可以成功插入到数据库了。

注意:

由于我们在前面  MySQL 配置文件中已经设置了数据库连接的默认编码是  utf8mb4,所以代码这边不用再设置。如果代码这边原来有设置编码,将其去掉或者改成  utf8mb4。以  PHP 代码为例:
1
mysqli_set_charset( $con 'utf8mb4' );   //或者直接去掉

原文出自: www.hangge.com   原文链接: http://www.hangge.com/blog/cache/detail_1411.html