MySQL Point 类型字段和PHP json_encode 函数结合导致的乱码问题

MySQL版本8.0 PHP版本 7.4

MySQL某表中某字段类型为 point ,查询出来后经过以下php代码被传递到前端,但是发生错误

    header('Content-Type:application/json; charset=utf-8');
    exit(json_encode([
        'code' => $message['code'],
        'status' => $message['status'],
        'message' => $message['message'],
        'data' => $message['data'],
    ], JSON_UNESCAPED_UNICODE));

通过php错误日志排查到:Malformed UTF-8 characters, possibly incorrectly encoded

原因在于json_encode识别到错误的编码,导致发生错误;所以可以通过下面的方式进行解决:

function fixUtf8($data) {
    if (is_array($data)) {
        foreach ($data as &$value) {
            $value = fixUtf8($value);
        }
        unset($value);
    } elseif (is_string($data)) {
        $data = mb_convert_encoding($data, 'UTF-8', 'UTF-8');
    }
    return $data;
}

或者

$data = mb_convert_encoding($data, ‘UTF-8’, ‘UTF-8’);

原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com

(0)
witersen的头像witersen
上一篇 2023年9月16日 上午3:28
下一篇 2024年7月22日 下午10:38

相关推荐

  • 使用lvm进行磁盘容量管理

    lvm和硬件raid、软件raid都可用来管理Linux操作系统的磁盘 lvm适合快速的物理磁盘和容量划分管理,raid适合更加精细化和高质量的文件写入和存储方案。 lvm中,有以…

    2024年7月22日
    1.1K0

发表回复

登录后才能评论