【问题标题】:Storing emojis in MySql database. Showing ??? in phpmyadmin在 MySql 数据库中存储表情符号。显示???在 phpmyadmin 中
【发布时间】:2018-07-02 06:15:55
【问题描述】:

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

【问题讨论】:

  • 在页面上显示那个表情符号怎么样,可能phpmyadmin没有显示它,可能会显示在你的应用程序中。这完全是由于您用于数据库的 unicode,我知道在 sql server 中,它具有 UTF-16,因此可以存储笑脸或表情符号。
  • phpMyAdmin 显示正确的数据;由于您在那里看到问号,这意味着数据一开始就没有正确存储。

标签: php html mysql database phpmyadmin


【解决方案1】:

this answer:在保存和加载的过程中,你需要在各处设置utf8mb4,PHP在与数据库通信时也必须知道使用编码。

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

【讨论】:

  • 兄弟,我已经通过使用 phpmyadmin 插入选项卡插入来测试表情符号。直接通过插入选项卡添加,但仍然显示???在数据库中。
  • 您需要发布更多信息。如何将表情符号放入数据库(具体代码)?是通过您的 PHP 代码(然后发布您建立数据库连接的方式会有所帮助)还是 phpMyAdmin?当您写“仍然无法工作”时,您采取了哪些不同的步骤?请扩展您的问题。
  • 写我的时候错过了你的新评论。尝试使用你自己的代码保存它——我以为你是,因为 php 标签。旧的 phpMyAdmin 有这个错误,请参阅 stackoverflow.com/a/40440449/3745800
  • 我遇到了类似的问题。我从 PhpMyAdmin 插入表情符号没有问题,但是如果我尝试通过我的 PHP 脚本插入它们,它只会显示为问号......有没有办法在插入之前在 PHP 中对其进行编码??
  • 我在连接数据库时设置了charset。 ($connection = new PDO("mysql:host=$dbhost; dbname=$dbname; charset=utf8", $dbuser, $dbpass);) 我所有的表和列都整理为utf8mb4_bin。不知道我在这里做错了什么
【解决方案2】:

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

mysqli_set_charset($con,"utf8");

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-03-16
      • 2023-03-09
      • 2016-08-13
      • 2015-04-25
      • 2014-09-01
      • 2016-06-04
      • 2017-01-12
      • 2012-12-27
      • 1970-01-01
      相关资源
      最近更新 更多