程序员

mysql 对 Emoji表情支持

2019-01-14  本文已影响55人  良人与我

Emoji表情是4个字节
而mysql的utf8编码最多3个字节,所以数据插不进去,而utfmb4是支持四个字节的。
所以解决方案就是:将mysql编码从utf8转换成utf8mb4。

具体要修改的地方如下:

1 修改mysql 配置,添加如下内容

[client]
default-character-set = utf8mb4 # 客户端数据默认字符集
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

2 数据库配置

创建数据库时候
charset 设置为 utf8mb4
collation 设置为 utf8mb4_general_ci


image.png

创建的数据表

CREATE TABLE `person` (
  `dtype` varchar(31) NOT NULL,
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `age` int(11) NOT NULL,
  `email` varchar(255) DEFAULT NULL,
  `mobile` varchar(255) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `hobby` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

如果是已经创建好的数据库做如下修改(1、2 步就可以)
1 对每一个数据库:

ALTER DATABASE dababase_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

2 对每一个表:

ALTER TABLE tablle_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

//3 对存储emoji表情的字段:

//ALTER TABLE tablle_name CHANGE `field_name` `field_name` VARCHAR(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

修改后表结构:

CREATE TABLE `person` (
  `dtype` varchar(31) COLLATE utf8mb4_unicode_ci NOT NULL,
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `age` int(11) NOT NULL,
  `email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `mobile` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `hobby` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

接下来测试下是否可以保持emoji 表情

通过postman 调用保存接口插入数据


image.png

再查询出所有数据


image.png

再看数据库里的内容


image.png
上一篇 下一篇

猜你喜欢

热点阅读