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

22 浏览
0 Comments

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

在我的数据库中,Emoji以问号的形式存储(在使用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导入数据库时,所有的问号都被真正的问号替换了,数据也被彻底丢失了。

编辑1:

phpMyAdmin>变量

[图片链接]

会话值(utf8)与预期值(utf8mb4)不同。

0
0 Comments

在MySQL数据库中,出现(emoji display as ? in MySQL database)这个问题的原因是phpMyAdmin的一个bug(在版本4.6.4中已经修复)。当使用phpMyAdmin连接数据库时,会话变量如character_set_client和character_set_results没有使用默认值进行初始化。可以参考这个commit来了解详情。

如果你遇到了这个bug,并且想要导入/导出数据库,请不要使用phpMyAdmin。作为解决方法,可以使用这个链接进行导入操作,使用这个链接的文档进行导出操作。

这个bug的解决方法是使用命令行进行导入/导出操作,而不是依赖phpMyAdmin。具体的解决步骤可以参考上述链接提供的文档。

总结起来,要解决(emoji display as ? in MySQL database)这个问题,可以通过使用命令行工具来代替phpMyAdmin进行导入和导出操作。这样可以避免phpMyAdmin的bug导致的字符集问题。

0
0 Comments

emoji在MySQL数据库中显示为?的问题通常是由于字符集设置不正确导致的。为了解决这个问题,需要将character_set_client、character_set_connection和character_set_results都设置为utf8mb4。其他的设置不重要。

在一些情况下,如果数据在插入时丢失,可能会导致emoji显示为单个问号。如果一个emoji显示为四个问号,那可能是另外一个问题。

有人尝试通过编辑my.cnf文件(通常位于/etc/my.cnf)来设置character_set_client和character_set_results为utf8mb4,但是没有效果。

还有人注意到,尽管在my.cnf文件中已经将character_set_client和character_set_results设置为utf8mb4,但会话值仍然不同。这可能是因为在连接时,客户端使用的字符集没有正确设置。不同的客户端在设置字符集方面有不同的方法,可以在这里找到一些方法。

总结起来,要解决emoji在MySQL数据库中显示为?的问题,需要确保将character_set_client、character_set_connection和character_set_results都设置为utf8mb4,并正确设置客户端连接时使用的字符集。

0