在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;
4条答案
按热度按时间km0tfn4u1#
我终于找到了解决方案。我们必须将连接字符集设置为utf8。在声明连接变量set charset之后:
之后,您的emoji或任何其他unicode文本将被加密并保存在mysql数据库中。
xbp102n02#
请参阅this answer:您需要在保存和加载的过程中处处设置utf8 mb 4,PHP必须知道在与数据库通信时也要使用该编码。
添加屏幕截图后:很可能你的数据库中已经有坏数据了--我猜问题出在你把表情符号保存到数据库的方式上,而不是你加载它的方式上(可能两者都有)。
wtlkbnrh3#
我也遇到了同样的问题。我使用的是CodeIgniter框架。
所以我在
application\config\database.php
中修改了下面的代码她开始在数据库里储存表情符号
rn0zuynd4#
在成功安装emoji-picker后,我也在mysql数据库中的Codeigniter-4中遇到了同样的问题。
谢谢@ ankitsingh,我能解决这个问题。
首先,更改了评论表上的COLLATE utf8mb4_bin,但它仍然继续显示????。
因此,在应用程序-〉配置-〉数据库.php中更改以下设置有帮助