Php 表情符号显示为?在MySQL数据库中

Php 表情符号显示为?在MySQL数据库中,php,mysql,character-encoding,emoji,Php,Mysql,Character Encoding,Emoji,表情符号存储为?在我的数据库中(当我使用phpMyAdmin可视化它们时),但是当我使用一个简单的请求(从php)检索它们时,我得到了真正的值 数据库上的行(使用phpMyAdmin) 来自php的请求 $query = "SELECT id,com FROM coms_table WHERE id = 627"; 结果 id com 627 \ud83d\ude0e 使用此命令 mysql> SHOW VARIABLES

表情符号存储为?在我的数据库中(当我使用phpMyAdmin可视化它们时),但是当我使用一个简单的请求(从php)检索它们时,我得到了真正的值

数据库上的行(使用phpMyAdmin)

来自php的请求

$query = "SELECT id,com
          FROM coms_table
          WHERE id = 627";
结果

id     com  
627    \ud83d\ude0e

使用此命令

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
我明白了:

my.cnf文件:

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
default-storage-engine=MyISAM
innodb_file_per_table=1
performance-schema=0
innodb_buffer_pool_size=134217728
max_allowed_packet=268435456
open_files_limit=10000
local-infile=0
character-set-client-handshake = TRUE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
总之,只有当我使用phpMyAdmin连接到数据库时,才会出现这个问题。最糟糕的是,当我尝试使用phpMyAdmin导入数据库时,所有的问号都被true“”替换,数据也会丢失

编辑1
phpMyAdmin>变量
会话值(utf8)不同于预期值(utf8mb4)

您需要
字符集\u客户端、\u连接和\u结果都是utf8mb4。其余的都无关紧要


单个问号可能意味着数据在插入时丢失。(1个表情符号的4个问号表示另一个问题。)

这似乎是一个phpMyAdmin错误(在版本4.6.4中更正)。
使用phpMyAdmin连接到数据库时,会话的变量(如
character\u set\u client
character\u set\u results
)不会使用默认值初始化。 看这个

如果您有此错误并希望导入/导出数据库,请不要使用phpMyAdmin。
作为一种解决方法,请使用中的文档执行导入操作,并执行导出操作。

您正在运行哪个版本的phpMyAdmin?听起来好像它不支持您正在使用的字符编码。@RyanLaBarre我正在运行phpMyAdminI的4.0.10.14版本。我已经尝试在utf8mb4编辑my.cnf文件(/etc/my.cnf)时设置
character\u set\u client
character\u set\u results
,但没有效果我编辑了我的帖子,您可以看到
character\u set\u client
character\u set\u结果
值等于utf8mb4。但是,会话值是不同的。有什么想法吗?(我已经重新启动了mysql并重新启动了服务器)我不清楚这些设置是如何,甚至是是否能够进入会话的。连接时,应建立客户端正在使用的字符集。这是由不同的客户以不同的方式完成的。其中一些被列入清单。