php中json_encode()在ie浏览器下无法生成对应的json串

$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',
),
),
);
$json_str = var_json_encode($array);

echo $json_str;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值