评论发表后表情不显示

小王子和小伙伴们在小区玩时在草丛中抓了几只蚂蚱上来,惊喜地拿上来给我看,对于小时候在老家麦田里经常见到这种害虫的我其实很不喜欢它的,本想着让小王子他们折磨一下,无奈小王子同情心泛滥,只好作罢,毕竟秋后的蚂蚱,蹦跶不了几天了。
蚂蚱

好吧,离题了,言归正传,经常来老王这里的朋友应该了解本站评论经历了从纯文字到文字加表情,而表情又从表情图片列表显示到点击才显示表情图片列表,虽然在不断折腾,但一直以来都只有一组表情。而最近老王发现越来越多朋友的网站评论上不仅有表情,而且有好几组表情。怀着别人家那么“富裕”而为什么我们家这么“穷”的心情,想着我们也应该要走上“富裕”的道路。
表情

想到当然就要做,试了好几种方法发现大多数都需要解析后表情图片才会显示,不然都只有提示文字显示,而业余的我又没有找到解决方法,最后终于找到了一个含有解析的案例,直播搬过来用了。
配置完又发现发表评论时表情图片可以在评论框中显示,但发表成功后表情却没有了。于是在网上查找原因,最后才发现数据库编码格式不是utf8mb4,

低版本的MySQL支持的utf8编码,最大字符长度为 3 字节,而MySQL在 5.5.3 之后增加了 utf8mb4 字符编码,mb4即 most bytes 4。简单说 utf8mb4 是 utf8 的超集并完全兼容utf8,能够用四个字节存储更多的字符。

当然他们也有介绍转换方法,大多数是在mysql中使用命令进行配置,但一直比较小(不)心(懂)的我基本都不敢随意修改数据库,害怕万一弄错就悲剧了,好在最后找到一个不用去动数据库并且适用于Wordpress的方法,

将下面的代码添加到主题functions.php里面。

PHP

function update_db_to_utf8mb4() {
if (!isset($_GET['update-utf8bm4'])) {
return;
}

require_once( ABSPATH . 'wp-admin/includes/upgrade.php');
/** WordPress Administration API */
require_once(ABSPATH . 'wp-admin/includes/admin.php');
/** WordPress Schema API */
require_once(ABSPATH . 'wp-admin/includes/schema.php');
$tables = $wpdb->tables('all');
if (!wp_should_upgrade_global_tables()) {
$global_tables = $wpdb->tables('global');
$tables = array_diff_assoc($tables, $global_tables);
}
foreach ($tables as $table) {
maybe_convert_table_to_utf8mb4($table);
}
}
add_action('wp_loaded', 'update_db_to_utf8mb4');

访问下列地址:

其实打开地址我什么也没有看见,但重新发表评论插入表情并发布时发现表情可以显示了。

不过还有一个问题,因为表情来源于网络,涉及到json文件中alias等原因,暂时没有深入研究和折腾,所以会出现如阿和留言所说的表情比较丑,但和阿和一起测试发现貌似和所用系统有关,正如我这边macOS看着可以,也许你那里看到会是另外一种。

阿和2020-10-16 10:32:22
原来真的加了表情啊,,,只是选择的表情是正常的,显示的表情就太丑了吧。。。😵😲😥😰😅😓😨😱

其实有些表情图标我也不是很喜欢,后续有时间再研究和折腾吧。

那年 • 今日
写于2020年10月14日
酸甜苦辣咸,五味调和,共存相生,百味纷呈。

赞助 点赞 12

芭比, 楚狂人, 小陆花, 阿和, 16, 珂泽, 老麦, Mr.Chou, 青萌, Dr.+Drunker, 演员, 独元殇, maqingxi等人对本文发表了32条热情洋溢的评论。
  • 芭比说道: 0
    我之前也是有折腾这个,后来就直接用图片表情了
    1. 老王说道:
      回复 芭比: 嗯,说不定哪天我又改回去了。😄
  • 楚狂人说道: 0
    玩博客的乐趣就在于折腾
    1. 老王说道:
      回复 楚狂人: 无折腾不博客。。。😂
  • 小陆花说道: 2
    前几天去一个论坛发现手机输入法自带的表情不支持,一律编译成问号 管理员说什么数据库...😢我蒙蒙的。看文章才知道数据库编码问题啊。😂以后接触做网站的话,可是会避免的一个问题。
    1. 老王说道:
      回复 小陆花: 嗯,之前只知道文件编码不同会导致乱码,access数据库字段有长度,没想到mySQL数据库也会有编码问题。。。😅
  • 阿和说道: 6
    我有点搞明白这个网络表情了,其实可以直接用UNICODE编码,不用更改数据库,也不用更改网页代码,直接调用就行,可以折腾一下😄😄😄
    1. 老王说道:
      回复 阿和: 其实文中mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。😂
  • 阿和说道: 6
    你这页面在手机上访问很卡的感觉,往上滑动的时候一顿一顿的,打字也出来的有点慢。我还以为是我手机的问题,转到我自己站又是嗖嗖飞快的…
    1. 老王说道:
      回复 阿和: 奇怪,我这边用华为自带的浏览器打开都是正常的 😦
      1. 阿和说道: 6
        回复 老王: 我也用的华为自带的浏览器啊
        1. 老王说道:
          回复 阿和: 可能是服务器的问题,等真正富裕了弄个CDN试下 😭
  • 发表回复

    您的电子邮箱地址不会被公开。 必填项已用*标注