我曾经认为这是100%:
file_put_contents ('cacheHere', json_encode($array));
但这只是 99%。它只能编码 utf8 编码的数据,所以:
file_put_contents ('cacheHere', json_encode(utf8_encode($array)));
它仍然不行,因为 $array 是数组,而不是字符串。我知道我可以对一个字段进行 utf8 编码,但我需要一个通用的解决方案。
使用array_walk_recursive
, 并在回调中检查当前条目是否为带有 . 的字符串is_string
。如果是,那么utf8_encode
它,否则保持原样。
json_encode (array_walk_recursive ($array, function (&$a) {
if (is_string ($a)) {
$a = utf8_encode ($a);
}
}));
一般的解决方案是让您的数据采用 UTF-8 格式。如果utf8_encode
对您有用,那么您的数据实际上是用 ISO-8859-1 编码的。
如果数据来自数据库并且您使用的是 MySQL,您可以这样做以使数据库结果以 UTF-8 而不是 ISO-8859-1 格式提供给您:
$mysqli->set_charset('utf8');
在进行任何查询之前。
这只是一个示例,它实际上取决于您从哪里获取数据。一直看到UTF-8。