我曾经认为这是100%:
file_put_contents ('cacheHere', json_encode($array));
但这只是99%。它只能编码utf8编码数据,所以:
file_put_contents ('cacheHere', json_encode(utf8_encode($array)));
它仍然不行,因为$ array是数组,而不是字符串。我知道我可以逐个编码一个字段,但我需要一个通用的解决方案。
答案 0 :(得分:4)
使用array_walk_recursive
,并在回调检查中检查当前条目是否为is_string
的字符串。如果是,则utf8_encode
,否则保持原样。
json_encode (array_walk_recursive ($array, function (&$a) {
if (is_string ($a)) {
$a = utf8_encode ($a);
}
}));
答案 1 :(得分:3)
一般解决方案是将您的数据保存为UTF-8。如果utf8_encode
适合您,那么您的数据实际上是用ISO-8859-1编码的。
如果数据来自数据库并且您使用的是MySQL,那么您可以使用UTF-8而不是ISO-8859-1来获取数据库结果:
$mysqli->set_charset('utf8');
在进行任何查询之前。
这只是一个例子,它实际上取决于您从何处获取数据。请参阅UTF-8 all the way through。