PHP base64解码时报编码utf-8错误

当PHP进行base64解码时遇到utf-8编码错误,问题通常在于数据中混杂了非base64编码的字符。解决方法是先验证数据是否符合utf-8和base64编码规范,再进行转码操作。可以参考相关博客文章进行详细处理。
摘要由CSDN通过智能技术生成

原因-:数据中含有不是base64编码字符;

解决思路:首先判断字符是否utf-8与base64编码;然后在转码

//获取器 提前修改
    public function getNicknameAttr($v)
    {
        if(self::is_utf8(base64_decode($v)) && self::str_is_base64($v) != ''){
        $data = base64_decode($v);
        if($data=='')
            return $v;
        return $data;
        }
        return $v;
    }
    public static function is_utf8($str)
    {
        $len = strlen($str);
        for ($i = 0; $i < $len; $i++) {
            $c = ord($str[$i]);
            if ($c > 128) {
                if (($c > 247)) {
                    return false;
                } elseif ($c > 239) {
                    $bytes = 4;
                } elseif ($c > 223) {
                    $bytes = 3;
                } elseif ($c > 191) {
                    $bytes = 2;
                } else {
                    return false;
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值