很多站长的网站,如果发帖或者回复里有emoji表情的话,会出现其奇怪怪的问题,有的discuz版本会截断Emoji后面的字符,有的会降emoji变成问号,反正就是不正常显示,今天我们就是来解决这个问题的。
首先得您的网站必须是UTF-8编码的才能搞,gbk的可不行。
discuz的编码是UTF-8,但是支持emoji需要utf-8mb4,只要把forum_thread表里的subject字段和forum_post表里的message和subject字段的编码改成utf-8mb4就可以了,可以通过phpmyadmin或者navicat来修改,记得更改前先备份哦,理论上来说没啥风险的。
另外config/config_global.php这个里面的数据库编码也得改成utf-8mb4。如:$_config[‘db’][‘1’][‘dbcharset’] = ‘utf8mb4’;
然后内容里输入emoji表情就可以正常显示了。
另外再分享个去除emoji表情的函数,备用:
function removeEmojiChar($str) { $mbLen = mb_strlen($str); $strArr = []; for ($i = 0; $i < $mbLen; $i++) { $mbSubstr = mb_substr($str, $i, 1, 'utf-8'); if (strlen($mbSubstr) >= 4) { continue; } $strArr[] = $mbSubstr; } return implode('', $strArr); }
|