在MySql数据库中存储表情符号,在phpmyadmin中显示???

toe95027  于 2022-11-09  发布在  PHP
关注(0)|答案(4)|浏览(162)

在MySQL数据库中存储emoji时显示问号???。我已经将数据库和表排序规则设置为utf8mb4。但数据库中仍显示?????而不是emoji。我还尝试在PHPMYADMIN控制台中更改现有行。但没有任何效果。显示???而不是Unicode字符。我还更改了表的存储引擎。InnoDB、MyISAM

SET NAMES utf8mb4;

ALTER DATABASE your_database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

km0tfn4u

km0tfn4u1#

我终于找到了解决方案。我们必须将连接字符集设置为utf8。在声明连接变量set charset之后:

mysqli_set_charset($con,"utf8");

之后,您的emoji或任何其他unicode文本将被加密并保存在mysql数据库中。

xbp102n0

xbp102n02#

请参阅this answer:您需要在保存和加载的过程中处处设置utf8 mb 4,PHP必须知道在与数据库通信时也要使用该编码。
添加屏幕截图后:很可能你的数据库中已经有坏数据了--我猜问题出在你把表情符号保存到数据库的方式上,而不是你加载它的方式上(可能两者都有)。

wtlkbnrh

wtlkbnrh3#

我也遇到了同样的问题。我使用的是CodeIgniter框架。
所以我在application\config\database.php中修改了下面的代码

'char_set' => 'utf8mb4',
'dbcollat' => 'utf8mb4_unicode_ci',

她开始在数据库里储存表情符号

rn0zuynd

rn0zuynd4#

在成功安装emoji-picker后,我也在mysql数据库中的Codeigniter-4中遇到了同样的问题。
谢谢@ ankitsingh,我能解决这个问题。
首先,更改了评论表上的COLLATE utf8mb4_bin,但它仍然继续显示????。
因此,在应用程序-〉配置-〉数据库.php中更改以下设置有帮助

'charset'  => 'utf8mb4',
'DBCollat' => 'utf8mb4_bin',

相关问题