【发布时间】:2013-01-06 13:09:08
【问题描述】:
我想把 Emoji 保存到 MySql 数据库中,我意识到,三个字节的 Emoji 正确保存在数据库中,但是 4 个字节的 emoji 被保存为问号。似乎我确实将 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 中看到了问号,但是如果我输入 select * from test_emoji; 我可以在 Mysql shell 中正确看到表情符号图标;有任何想法吗?
有人可以帮忙吗?
谢谢
【问题讨论】:
-
您确定您的客户端 (phpMyAdmin) 确实使用 utf8mb4 字符集连接到服务器吗?在 phpMyAdmin 中重复上述查询
-
嗨,Michel,谢谢你的提醒,我也发现了,我的 myphpadmin 实际上还在使用 utf8,这就是为什么我在 phpmyadmin 客户端上看不到它,但在 MySQL shell 上可以看到它的原因.但是,我在这里有一个新问题。请阅读这篇文章:stackoverflow.com/questions/14488503/…
标签: mysql phpmyadmin emoji utf8mb4