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

问题描述 投票:0回答:5

显示问号???同时将表情符号存储在 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;

table structure and all elements

php html mysql database phpmyadmin
5个回答
7
投票

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

mysqli_set_charset($con,"utf8");

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


4
投票

参见这个答案:在保存和加载时,您需要在各处设置utf8mb4,PHP在与数据库通信时也必须知道使用该编码。

添加屏幕截图后:您的数据库中很可能已经存在错误数据 - 我猜问题在于您将表情符号保存到数据库的方式,而不是您加载它的方式(不过也可能是两者)。


2
投票

我也有同样的问题。我正在使用 CodeIgniter 框架。
所以我在

application\config\database.php

中更改了以下代码
'char_set' => 'utf8mb4',
'dbcollat' => 'utf8mb4_unicode_ci',

它开始在数据库中存储表情符号。


0
投票

我在 Codeigniter-4 的 emojis 阅读中也遇到了同样的问题???成功安装emoji-picker

后在mysql数据库中

谢谢@ankit singh,我能够解决它。

首先更改了评论表上的COLLATE utf8mb4_bin,但它仍然继续显示???。

因此将 App->Config->Database.php 设置更改为以下有帮助

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

0
投票

在 PHPMyAdmin 中只需将列的类型更改为 blob 即可正常工作

© www.soinside.com 2019 - 2024. All rights reserved.