经过2个小时的挖掘(参考编辑)
我发现以下内容:
- 就我而言,这是一个编码问题
mb_detect_encoding
返回错误的响应,某些字符串可能不是UTF-8utf8_enpre()
在这些字符串上使用解决了我的问题,但请参阅下面的注释
这是一个递归函数,可以强制将数组中包含的所有字符串转换为UTF-8:
function utf8ize($d) { if (is_array($d)) { foreach ($d as $k => $v) { $d[$k] = utf8ize($v); } } else if (is_string ($d)) { return utf8_enpre($d); } return $d;}像这样简单地使用它:
echo json_enpre(utf8ize($data));
注意:根据文档,utf8_enpre()将ISO-8859-1字符串编码为UTF-8,因此,如不确定注释和其他解决方案中所述,如果不确定输入编码iconv()或mb_convert_encoding()可能是更好的选择。



