2018年04月6日网站服务器迁移完成……

php Malformed UTF-8 characters, possibly incorrectly encoded 解决办法

php 苏 demo 89℃

错误信息提示:

Malformed UTF-8 characters, possibly incorrectly encoded

刚开始表示比较懵,系统正常用着,突然出现了这个问题,而且受到网上其他解说的误导,真的以为是数据库配置出现问题了(尽管这期间,测试数据库的确有出现问题)。

数据库服务恢复以后,发现问题依然,于是信息查看代码的具体错误,并进行追踪

/**
 * 处理数据
 * @access protected
 * @param mixed $data 要处理的数据
 * @return mixed
 * @throws \Exception
 */
protected function output($data)
{
    try {
        // 返回JSON数据格式到客户端 包含状态信息
        $data = json_encode($data, $this->options['json_encode_param']);
        if ($data === false) {
            throw new \InvalidArgumentException(json_last_error_msg());
        }

        return $data;
    } catch (\Exception $e) {
        if ($e->getPrevious()) {
            throw $e->getPrevious();
        }
        throw $e;
    }
}

问题定位在这里,json_encode以后,data返回了false, 正常情况下对数组进行json_encode的时候不会有问题的,除非数据库出现了非utf-8的字符集或者乱码。

于是打印原始数据,果然在某个字段进行截取指定位数加星号处理的时候,截断了字符,导致乱码。

解决方案:

1.修正导致乱码的字符;

2.封锁导致乱码的字符集入口,增加验证;

3.调整字符串截取函数支持中文截取;

总结:

有时候遇到问题,直接bd出来的答案只是别人的答案,并不一定适合自己。

 

打赏

转载请注明:苏demo的博客 » php Malformed UTF-8 characters, possibly incorrectly encoded 解决办法

   如果本篇文章对您有帮助,欢迎向博主进行赞助,赞助时请写上您的用户名。
支付宝直接捐助帐号oracle_lee@qq.com 感谢支持!
喜欢 (0)or分享 (0)