原因-:数据中含有不是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;