6

我想将 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 中正确看到表情符号图标;有任何想法吗?

有人可以帮忙吗?

谢谢

4

2 回答 2

3

phpMyAdmin 具有硬编码utf8的字符集,因此您必须编辑它的代码才能更改它。对于未来的版本,它在fb30c14中得到修复(这也向您展示了在哪里更改这些值)。

于 2013-08-15T09:56:56.583 回答
3

将您的 phpMyAdmin 升级到 >= 4.3.9 并解决问题。

于 2015-02-09T03:29:04.737 回答