在不升级 mysql 的情况下直接使用 mysql utf8 存储 超过三个字节的 emoji 表情

    xiaoxiao2026-01-09  10

    由于现在数据库的版本是5.5.2,但是看网上说要直接存储emoji表情,需要升级到5.5.3然后把字符集设置为utf8mb4,但是升级数据库感觉属于敏感操作。

    考虑了多久之后直接考虑使用正则来替换,但是emoji表情的unicode码太多了,在网上找了一份代码,还是2年前更新的,想了想还是算了。

    PHP 版本

    最简单的办法就是直接找到接受到的文本中的字符串中4个字节的内容,做rawurlencode编码,再入库。输出的时候再替换回来,然后再用rawurldecode转码回unicode到手机再解析为emoji表情。

    获取字符串长度mb_strlen,按字符来截取字符串mb_substr(mb_strcut是按字节来截取,有区别)。

    存储

    $strEncode = ''; $length = mb_strlen($str,'utf-8'); for ($i=0; $i < $length; $i++) { $_tmpStr = mb_substr($str,$i,1,'utf-8'); if(strlen($_tmpStr) >= 4){ $strEncode .= '[[EMOJI:'.rawurlencode($_tmpStr).']]'; }else{ $strEncode .= $_tmpStr; } } echo $strEncode."\n";// 周梦康123~[[EMOJI:
    转载请注明原文地址: https://yun.8miu.com/read-144087.html
    最新回复(0)