Codeigniter 4 -数据库中存储的Emojis与html页面中显示的不同

vd2z7a6w  于 2022-12-25  发布在  其他
关注(0)|答案(1)|浏览(120)

我是Codeigniter 4的新手,我正在做一个表情符号的教程。我得到了这个问题,我花了一个星期的时间在互联网上,希望找到一个解决方案。不幸的是,没有什么可以解决这个问题。希望你能帮助我。
问题描述:
我按照Github emojionearea的链接创建了一个表情符号选择器。
它运行完美,直到我提交了一个表情符号到数据库,并从数据库检索到它显示在网页上。
我选择了一个表情符号,例如男人技术Maven表情符号,它在输入字段中显示为一个表情符号(见下面的截图"提交前"),这是我想要的。
Before Submitting
在我将它提交到数据库并检索到页面显示后,我意识到有两个表情符号已被保存(见下面的"提交后"屏幕截图)。After Submitting
这就是我想得到帮助的问题。
以下是我的数据库设置:
我将DB、DB表和列设置为字符集utf8mb4,并将排序规则设置为utf8mb4_unicode_ci。我在phpmyadmin SQL中运行SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';,以查看设置了字符集的数据库的当前状态。DB Charset
在Config文件夹中的Database.php文件中,我设置如下:enter image description here
在我的php视图中,我在头文件中包含了代码<meta http-equiv="Content-type" content="text/html" charset="utf-8">
描述完我的问题了。
请帮助我解决这个问题。谢谢!
我试着为数据库更改许多字符集。我期望数据库在提交到数据库之前得到与页面中显示的表情符号完全一样的效果。

bwleehnv

bwleehnv1#

在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 JoyPixels\Client;
use JoyPixels\Ruleset;

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

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

<?php

namespace App\Libraries;

use JoyPixels\Client;

class Emoji extends Client
{
    public $emojiVersion = '3.1'; // 3.1.2 does not seem to work
}

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

use App\Libraries\Emoji;
use JoyPixels\Ruleset;

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

相关问题