emoji表情的错误分享解决【及解决方案】

地虎降天龙 12天前 129

本人一直从事微信方面的第三方开发,所以遇到相关问题,给出解决方案。基于fa平台
出现情况,本人使用 第三方登录库,微信登录时,若微信方的用户昵称是复杂的特殊emoji表情【类似于这种four_leaf_clover 等等】,那么就会报错或者提示error

解决方案:
1、修改表:fa_user 字段:nickname 排序规则改成:utf8mb4_general_ci
2、修改表:fa_third 字段:openname 排序规则改成:utf8mb4_general_ci
3、修改文件:application\database.php

'charset' => Env::get('database.charset', 'utf8mb4'),

即可解决。因为出现多次,故分享出来。 若有更好的解决方案,也望分享给大家。

最后于 12天前 被地虎降天龙编辑
最新回复 (10)
  • 85300371 11天前
    感谢TA
    0 引用 2

    受用,感谢分享

  • F4NNIU 打赏 11天前
    感谢TA
    0 引用 3

    非常感谢分享。

    这里推荐一下楼主的作品。

    微信小程序购物商城
    基于ThinkPHP5和VantUI进行二次开发的微信小程序购物商城,拥有强大的小程序购物车、多规格商品、运费模板、多地区邮费、库存管理、自定义模板颜色、订单通知、自定义通知等功能

    https://www.fastadmin.net/store/litestore.html

    image.png

  • 千鸟 11天前
    感谢TA
    0 引用 4

    赞一个

  • 青袂 11天前
    感谢TA
    1 引用 5

    我的办法是将微信昵称用base64转义后保存,能够减少数据库的数据存储大小,但是需要转义

  • 地虎降天龙 楼主 11天前
    感谢TA
    0 引用 6
    F4NNIU 非常感谢分享。 这里推荐一下楼主的作品。 微信小程序购物商城 基于ThinkPHP5和VantUI进行二次开发的微信小程序购物商城,拥有强大的小程序购物车、多规格商品、运费模板、多地区邮 ...

    谢谢给我做广告grinning

  • F4NNIU 打赏 11天前
    感谢TA
    0 引用 7
    地虎降天龙 谢谢给我做广告:grinning:

    我不是打广告,我是合理的推荐。 grin

  • ngu98 11天前
    感谢TA
    0 引用 8

    @地虎降天龙 我还有个小方法就是替换掉表情

     /**
         * 替换掉emoji表情
         * @param $text
         * @param string $replaceTo
         * @return mixed|string
         */
        public static function filterEmoji($text, $replaceTo = '?')
        {
            $clean_text = "";
            // Match Emoticons
            $regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u';
            $clean_text = preg_replace($regexEmoticons, $replaceTo, $text);
            // Match Miscellaneous Symbols and Pictographs
            $regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u';
            $clean_text = preg_replace($regexSymbols, $replaceTo, $clean_text);
            // Match Transport And Map Symbols
            $regexTransport = '/[\x{1F680}-\x{1F6FF}]/u';
            $clean_text = preg_replace($regexTransport, $replaceTo, $clean_text);
            // Match Miscellaneous Symbols
            $regexMisc = '/[\x{2600}-\x{26FF}]/u';
            $clean_text = preg_replace($regexMisc, $replaceTo, $clean_text);
            // Match Dingbats
            $regexDingbats = '/[\x{2700}-\x{27BF}]/u';
            $clean_text = preg_replace($regexDingbats, $replaceTo, $clean_text);
            return $clean_text;
        }
  • 地虎降天龙 楼主 10天前
    感谢TA
    0 引用 9
    ngu98 @地虎降天龙 我还有个小方法就是替换掉表情 ``` /** * 替换掉emoji表情 * @param $text * @param string $repl ...

    谢谢,这个也可以,过滤掉也挺好

  • 地虎降天龙 楼主 10天前
    感谢TA
    0 引用 10
    青袂 我的办法是将微信昵称用base64转义后保存,能够减少数据库的数据存储大小,但是需要转义

    你这个能保留复杂表情吗

  • 青袂 8天前
    感谢TA
    0 引用 11

    @地虎降天龙 微信自带表情没问题

  • 未登录
    12
返回