3

私はこれが100%だと思っていました:

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

しかし、それは 99% にすぎません。utf8 でエンコードされたデータのみをエンコードできるため、次のようになります。

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

$array は文字列ではなく配列であるため、それでも問題ありません。フィールドを 1 つずつ 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 を使用している場合、これを実行して、データベースの結果を ISO-8859-1 ではなく UTF-8 で取得できます。

$mysqli->set_charset('utf8');

クエリを作成する前に。

これは一例に過ぎず、実際にはデータをどこから取得するかによって異なります。全体を通して UTF-8を参照してください。

于 2013-01-11T11:02:49.457 に答える