$map['city'] = $_REQUEST['city_name'];
$map['disorder'] = $_REQUEST['disorder'];
var_dump($map);
var_dump( json_encode($map));
当提交的所有变量为英文时,两者均显示正常,但是如果传入的变量有中文的时候,在ie浏览器中就会出现false,查了一下,是中文的原因。
/**
* 解决json_encode不支持中文问题
*
* @Package
* @Copyright (c) 1998-2012 All Rights Reserved
* @Author
* @Version $Id$
*/
/**
* 对变量或者数据进行urlencode编码,使得在进行json_encode的时候进行编码的不是中文,防止json_encode失败
* urlencode 对字符串进行编码 <?php // echo urlencode("要转码的内容");?>
* urldecode urldecode — 解码已编码的 URL 字符串 ,返回解码后的字符串。
* @access private
* @param $var
* @return array
*/
function var_urlencode($var) {
if (empty ( $var )) {
return false;
}
// 判断是否为数组
if(is_array ($var)){
foreach ($var as $k => $v ) {
// is_scalar : 检测变量是否为标量
if (is_scalar ($v)) { // if用来处理不是数组的情况
$var [$k] = urlencode ($v );
}
else {//else用来处理数组
$var [$k] = var_urlencode ( $v );
}
}
}else {//用来处理数组
$var = urlencode ( $var );
}
return $var;
}
/**
* 对编码后的变量进行json_encode,json_encode不支持中文的问题
* @access public
* @param $var
* @return string
*/
function var_json_encode($var) {
$_var = var_urlencode($var);
$_str = openapi_json_encode($_var);
return urldecode($_str);
}
//生成json字符串
FUNCTION openapi_json_encode($data)
{
if (version_compare(PHP_VERSION, '5.4.0', '>='))
{
RETURN json_encode($data,JSON_UNESCAPED_UNICODE);
}
else
{
RETURN json_encode($data);
}
}
/*Test*/
$array = array (
'name' => '路人甲',
'age' => '13',
'profile' => array (
'uid' => 12,
'uname' => 'lili',
'school' => '中学',
'info' => array (
'hometown' => '亚洲',
'fond' => '苹果',
'tool' => 'bike',
),
),
);
$array = array (
'name' => '路人甲',
'age' => '13',
'profile' => array (
'uid' => 12,
'uname' => 'lili',
'school' => '中学',
'info' => array (
'hometown' => '亚洲',
'fond' => '苹果',
'tool' => 'bike',
),
),
);
$json_str = var_json_encode($array);
echo $json_str;