【www.bbyears.com--js教程】
代码如下
/* 处理json_encode中文乱码 */
$data = array ("game" => "冰火国度", "name" => "刺之灵", "country" => "冰霜国", "level" => 45 );
echo json_encode ( $data );
echo "
";
$newData = array ();
foreach ( $data as $key => $value ) {
$newData [$key] = urlencode ( $value );
}
echo urldecode ( json_encode ( $newData ) );
?>
结果显示:
代码如下 {“game”:”u51b0u706bu56fdu5ea6″,”name”:”u523au4e4bu7075″,”country”:”u51b0u971cu56fd”,”level”:45}{“game”:”冰火国度”,”name”:”刺之灵”,”country”:”冰霜国”,”level”:”45″}
找到一个更全面的解决乱码方法
// 将数组转换成Json格式,中文需要进行URL编码处理
function Array2Json($array) {
arrayRecursive($array, "urlencode", true);
$json = json_encode($array);
$json = urldecode($json);
// ext需要不带引号的bool类型
$json = str_replace(""false"","false",$json);
$json = str_replace(""true"","true",$json);
return $json;
}
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
static $recursive_counter = 0;
if (++$recursive_counter > 1000) {
die("possible deep recursion attack");
}
foreach ($array as $key => $value) {
if (is_array($value)) {
arrayRecursive($array[$key], $function, $apply_to_keys_also);
} else {
$array[$key] = $function($value);
}
if ($apply_to_keys_also && is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
$recursive_counter--;
}
?>