我想将表情符号保存到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中正确看到表情符号图标;有任何想法吗?
有人可以帮忙吗?
由于
答案 0 :(得分:3)
phpMyAdmin具有硬编码的utf8
字符集,因此您必须编辑它的代码才能更改它。对于未来版本,它已在fb30c14中修复(这也显示了更改这些值的位置)。
答案 1 :(得分:3)
将phpMyAdmin升级到> = 4.3.9并解决问题。