phpMyAdmin mysql将表情符号保存为问号

时间:2013-01-23 05:42:57

标签: mysql phpmyadmin emoji utf8mb4

我想将表情符号保存到MySql数据库中,我意识到,数据库中正确保存了三个字节的表情符号,但是4字节的表情符号已被保存为问号。似乎我完全将utf8转换为utf8mb4,但我不知道这里究竟缺少了什么。我的MySQL版本是5.5.29,当我在MySql shell中执行SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';时,它显示以下内容:

+--------------------------+--------------------+
| 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中看到了问号,但是如果我从test_emoji中输入select *,我可以在Mysql shell中正确看到表情符号图标;有任何想法吗?

有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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