Codeigniter 4 -数据库中存储的表情符号与在html页面中显示的表情符号不同



我是Codeigniter 4的新手,我正在制作一个与表情符号相关的教程。我遇到了这个问题,我花了一个星期的时间上网,希望能找到解决方案。不幸的是,没有什么能解决这个问题。希望你能帮助我。

问题描述:

我跟随Github emojionearea的链接,帮助我创建了一个表情符号选择器。

它运行完美,直到我提交了一个表情符号到数据库,并从数据库检索它显示在一个网页。

我选择了一个表情符号,例如Man Technologist表情符号,它在输入栏中显示为一个表情符号(见截图"提交前")

之前提交

当我将它提交到数据库并检索到页面中显示后,我意识到有两个表情符号已被保存(见"提交后"截图)。在提交

这就是我希望得到帮助的问题。

以下是我的数据库设置:

我将DB、DB表和列设置为字符集utf8mb4,排序规则设置为utf8mb4_unicode_ci。我在phpmyadmin SQL中运行SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';,以查看我的数据库的当前状态。如下所示:数据库字符集

在Config文件夹下的Database.php文件中,我设置如下:输入图片描述

在我的php视图中,我在标题中包含了代码<meta http-equiv="Content-type" content="text/html" charset="utf-8">

完成我的问题描述。

请帮我解决这个问题。谢谢你!

我试图为数据库更改许多字符集。在提交给数据库之前,我希望数据库得到与页面显示的表情符号完全相同的表情符号。

在Emojionearea github页面上说"The end result is a secure text/plain in which the image icons will be replaced with their Unicode analogues."所以保存到数据库的是你选择的Emojione图像的unicode版本。

要将unicode转换回Emojione图像,请安装Emojione库的PHP工具包:https://github.com/joypixels/emoji-toolkit/blob/master/INSTALLATION.md

composer require joypixels/emoji-toolkit

然后使用这个工具包将unicode转换回图像:https://github.com/joypixels/emoji-toolkit/blob/master/examples/PHP.md

use JoyPixelsClient;
use JoyPixelsRuleset;
$client = new Client(new Ruleset());
echo $client->toImage($inputText);

Emojionearea似乎默认使用Emojione的旧版本(3.1.2),因此您可能希望创建Client类的扩展以将工具包设置为相同的版本,因为不同版本的图像略有不同:

<?php
namespace AppLibraries;
use JoyPixelsClient;
class Emoji extends Client
{
public $emojiVersion = '3.1'; // 3.1.2 does not seem to work
}

然后使用这个类将unicode字符串转换为图像:

use AppLibrariesEmoji;
use JoyPixelsRuleset;
$client = new Emoji(new Ruleset());
echo $client->toImage($inputText);

相关内容

  • 没有找到相关文章

最新更新