json_encode() 抛出错误:“参数中的 UTF-8 序列无效”

问题描述 投票:0回答:2
php json utf-8
2个回答
4
投票

json_encode
只允许
UTF-8
字符进行编码。看起来您尝试编码的数据可能包含非
UTF-8
字符。

所以,你应该先将字符串/数据转换为UTF-8,然后再进行编码。

mb_convert_encoding($string,'UTF-8','UTF-8');
json_encode($string);

0
投票

基于@Kishor在这里的答案,OP在传入数组时收到此错误,因此您可以将Kishor发布的解决方案包装在递归函数中以处理任何传递的结构:

function encode_for_json($item){
        if(is_string($item)){
            return mb_convert_encoding($item,'UTF-8','UTF-8');
        }
        if(is_array($item) || is_object($item)){
            foreach($item as &$v){
                $v = self::encode($v);
            }
        }
        return $item;
    }

然后你可以这样称呼它:

json_encode( encode_for_json($my_variable) );

它应该适用于几乎任何标准数据结构。

© www.soinside.com 2019 - 2024. All rights reserved.