由于现在数据库的版本是<code>5.5.2</code>,但是看网上说要直接存储<code>emoji</code>表情,需要升级到<code>5.5.3</code>然后把字符集设置为<code>utf8mb4</code>,但是升级数据库感觉属于敏感操作。
考虑了多久之后直接考虑使用正则来替换,但是<code>emoji</code>表情的<code>unicode</code>码太多了,在网上找了一份代码,还是2年前更新的,想了想还是算了。
最简单的办法就是直接找到接受到的文本中的字符串中4个字节的内容,做<code>rawurlencode</code>编码,再入库。输出的时候再替换回来,然后再用<code>rawurldecode</code>转码回<code>unicode</code>到手机再解析为<code>emoji</code>表情。
获取字符串长度<code>mb_strlen</code>,按字符来截取字符串<code>mb_substr</code>(<code>mb_strcut</code>是按字节来截取,有区别)。

php 就这么轻松愉快的解决了。
考虑到想使用php里面的套路,对原字符串逐个字符获取其长度,如果超过3个字节,那么则编码下,就能存储了,依照上次的经验,我写了如下代码
单个单个的来,能获取到正确的字节数,但是如何保证切割字符串的时候是正确的呢?我找遍了城市所有的街道,都没有,找到我要的方法.