3

我曾经认为这是100%:

file_put_contents ('cacheHere', json_encode($array));

但这只是 99%。它只能编码 utf8 编码的数据,所以:

file_put_contents ('cacheHere', json_encode(utf8_encode($array)));

它仍然不行,因为 $array 是数组,而不是字符串。我知道我可以对一个字段进行 utf8 编码,但我需要一个通用的解决方案。

4

2 回答 2

5

使用array_walk_recursive, 并在回调中检查当前条目是否为带有 . 的字符串is_string。如果是,那么utf8_encode它,否则保持原样。

json_encode (array_walk_recursive ($array, function (&$a) {
    if (is_string ($a)) {
        $a = utf8_encode ($a);
    }
}));
于 2013-01-10T23:17:40.920 回答
3

一般的解决方案是让您的数据采用 UTF-8 格式。如果utf8_encode对您有用,那么您的数据实际上是用 ISO-8859-1 编码的。

如果数据来自数据库并且您使用的是 MySQL,您可以这样做以使数据库结果以 UTF-8 而不是 ISO-8859-1 格式提供给您:

$mysqli->set_charset('utf8');

在进行任何查询之前。

这只是一个示例,它实际上取决于您从哪里获取数据。一直看到UTF-8

于 2013-01-11T11:02:49.457 回答