PHP での中国語の処理は常に完璧ではありません。私たちは、json を処理するときにも同じ問題に遭遇しました。その後、json_encode の中国語の文字化けまたは空のプログラムに対する完璧な解決策をまとめました。
コードは次のとおりです | コードをコピー |
/*************************************************** * ********** * * 特定の関数を使用して配列内のすべての要素を処理します * @param string &$array 処理対象の文字列 * @param string $function 実行する関数 * @return boolean $apply_to_keys_only キーにも適用されるかどうか * @アクセス公開 * ************************************************* * ***********/ 関数 arrayRecursive(&$array, $function, $apply_to_keys_only = false) { 静的 $recursive_counter = 0; If (++$recursive_counter > 1000) { Die('深い再帰攻撃の可能性あり'); } foreach ($array as $key => $value) { If (is_array($value)) { arrayRecursive($array[$key], $function, $apply_to_keys_only); } その他 { $array[$key] = $function($value); } If ($apply_to_keys_only && is_string($key)) { $new_key = $function($key); If ($new_key != $key) { $array[$new_key] = $array[$key]; unset($array[$key]); } } } $recursive_counter--; } /*************************************************** * ********** * * 配列を JSON 文字列に変換します (中国語と互換性があります) * @param array $array 変換する配列 * @return string 変換されたjson文字列 * @アクセス公開 * ************************************************* * ***********/ 関数 JSON($array) { arrayRecursive($array, 'urlencode', true); $json = json_encode($array); urldecode($json)を返します; } $配列 = 配列 ( 「名前」=>「ルオエン」、 「年齢」=>24 ); エコー JSON($array); |