显示问号???同时将表情符号存储在 MySQL 数据库中。我已经将数据库和表排序规则设置为utf8mb4。但仍然显示??? ???而不是数据库中的表情符号。我还尝试更改 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;
我终于找到了解决方案。 我们必须将连接字符集设置为 utf8。 声明连接变量后设置字符集:
mysqli_set_charset($con,"utf8");
之后您的表情符号或任何其他 unicode 文本将被加密并保存在 mysql 数据库中。
参见这个答案:在保存和加载时,您需要在各处设置utf8mb4,PHP在与数据库通信时也必须知道使用该编码。
添加屏幕截图后:您的数据库中很可能已经存在错误数据 - 我猜问题在于您将表情符号保存到数据库的方式,而不是您加载它的方式(不过也可能是两者)。
我也有同样的问题。我正在使用 CodeIgniter 框架。
所以我在
application\config\database.php
中更改了以下代码
'char_set' => 'utf8mb4',
'dbcollat' => 'utf8mb4_unicode_ci',
它开始在数据库中存储表情符号。
我在 Codeigniter-4 的 emojis 阅读中也遇到了同样的问题???成功安装emoji-picker
后在mysql数据库中谢谢@ankit singh,我能够解决它。
首先更改了评论表上的COLLATE utf8mb4_bin,但它仍然继续显示???。
因此将 App->Config->Database.php 设置更改为以下有帮助
'charset' => 'utf8mb4',
'DBCollat' => 'utf8mb4_bin',
在 PHPMyAdmin 中只需将列的类型更改为 blob 即可正常工作