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

相关推荐

  • MySQL配置主从复制和主主复制

    背景:两台服务器A、B各自部署MySQL5.6,配置主主复制以互相同步数据 一、主从复制配置(先理解主动复制的配置过程) 二、主主复制 所谓主主复制,就是两台数据库互相同步数据 要…

    2023年3月8日
    7150

发表回复

登录后才能评论