为什么在这种情况下json_encode会返回false


Why would json_encode return false in this case?

我有一个函数,可以返回城市列表(以及一些其他数据)

//after some logic
print_r($cities);
echo json_encode($cities);

翻新一个城市后的打印结果,在这种情况下是麦德林市:

Array ( [0] => Array ( [id] => 1 [state_id] => 2 [name] => Medellín [propauthor] => 0 ) )

json_encode()只返回false

编辑:json_last_error()返回JSON_ERROR_UTF8,正如您所看到的,城市可能有波浪号(重音符号)

来自PHP的json_last_error()手册页:

JSON_ERROR_UTF8 UTF-8字符格式错误,可能编码错误(PHP 5.3.3)

您必须确保提供给json_encode()的数据是UTF8,您应该尝试使用iconv将字符串转换为正确的格式。