json_encode
只允许 UTF-8
字符进行编码。看起来您尝试编码的数据可能包含非 UTF-8
字符。
所以,你应该先将字符串/数据转换为UTF-8,然后再进行编码。
mb_convert_encoding($string,'UTF-8','UTF-8');
json_encode($string);
基于@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) );
它应该适用于几乎任何标准数据结构。