繁体   English   中英

codeigniter 4 / 如何从 mysql db 中获取 select 表情符号并在视图中显示

[英]codeigniter 4 / how to select emoji from mysql db and display in view

我有一张名为 mh_country 的表。 这是 phpmyadmin 的一行。 您可以看到表情符号正确显示了阿富汗国旗。

获取表情符号的数据库快照

'emoji' 的 mysql 中的编码是正确的,如下所示;

表情符号的mysql结构

我想在我的视图中显示表情符号。 首先,这是我获取“表情符号”的方法:

function display_country_dialing_codes(){
    $model = new \App\Models\MhCountryModel;
    $builder = $model->builder('mh_country');
    $builder->select('country_name, phonecode, emoji');
    $query   = $builder->get();
    $result  = $query->getResult();
    return $result;
}

现在我正在尝试在我的视图中显示标志;

            $x = display_country_dialing_codes();
            echo $x[0]->emoji;

但我得到的只是'??'。

请问如何显示表情符号?

这个问题有一个非常简单的解决方案:

而不是使用varchar ,将表情符号的数据类型更改为blob甚至tinyblob

图像可以作为字符串(图像名称、路径等)或在您的情况下作为二进制字符串( blob或 tinyblob,也可用于表情符号)存储在数据库中:

来自链接的文档:

BLOB 值被视为二进制字符串(字节字符串)。 它们具有二进制字符集和排序规则,比较和排序基于列值中字节的数值。 TEXT 值被视为非二进制字符串(字符串)。 它们具有二进制以外的字符集,并且基于字符集的排序规则对值进行排序和比较。

经过测试,它可以工作

在此处输入图像描述

编辑您的数据库配置文件

app\Config\Database.php

并在您的数据库连接下将charset设置为utf8mb4

'charset'  => 'utf8mb4',

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM