我想将 Emoji 保存到 MySql 数据库中,我意识到,三个字节的 Emoji 正确保存在数据库中,但是 4 个字节的 emoji 已保存为问号。似乎我确实将 utf8 完全转换为 utf8mb4,但我不知道这里到底缺少什么。我的 MySQL 版本是 5.5.29,当我SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
在 MySql shell 中执行时,它显示以下内容:
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+
现在,出于测试目的,我只创建了 1 个数据库和 1 个表来测试表情符号的保存。我通过 phpMyAdmin 创建了数据库,并通过 MySql shell 创建了表:
CREATE TABLE `test_emojis` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
它仍然不起作用(仍然是问号)。
但是,我发现了一些有趣的东西,我在 phpMyAdmin 中看到了问号,但是如果我输入 select * from test_emoji; 我可以在 Mysql shell 中正确看到表情符号图标;有任何想法吗?
有人可以帮忙吗?
谢谢