前台通过ajax获取后台数据,PHP如何返回中文数据

  现在经常使用Ajax调用后台php获取后台数据,但是PHP返回的数据如果含有中文的话,Ajax会无法识别,那咋整呢,我用的是比较笨的方法,但是实用:  

  方法一:

echo urldecode(json_encode(array('status'=>'1', 'errMsg'=>urlencode('数据传递错误,请重试'))));
return;

  上面是之前遇到时候的解决办法,但是我又遇到了一次,用上面的办法不管用,用网上各种办法也是不行,最后琢磨出第二种方法(这种方法可能只适用于这一种情况,但其他方法调不出来可以试一下这一种),

  方法二:

//show_as_table是拼接HTML代码的方法
$tableHtml = $this->show_as_table($data);
$tableHtml = iconv('GBK', 'UTF-8', $tableHtml);
echo json_encode(array("success"=>true, "data"=>$tableHtml));die;

   方法三:用下面的两种方式进行url转码

    方式一:

public function ch_json_encode($data) {
        function ch_urlencode($data) {
            if (is_array($data) || is_object($data)) {
                foreach ($data as $k => $v) {
                    if (is_scalar($v)) {
                        if (is_array($data)) {
                            $data[$k] = urlencode($v);
                        } else if (is_object($data)) {
                            $data->$k = urlencode($v);
                        }
                    } else if (is_array($data)) {
                        $data[$k] = ch_urlencode($v); //递归调用该函数
                    } else if (is_object($data)) {
                        $data->$k = ch_urlencode($v);
                    }
                }
            }
            return $data;
        }

        $ret = ch_urlencode($data);
        $ret = json_encode($ret);
        return urldecode($ret);
    }

    方式二:其实是方式一的不同写法

  public function arrayRecursive(&$array, $function='urlencode', $apply_to_keys_also = false){
        foreach ($array as $key => $value) {
            if (is_array($value)) {
                $this->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]);
                }
            }
        }
    }
    public function JSON($array){
        $this->arrayRecursive($array, 'urlencode', true);
        $json = json_encode($array);
        return urldecode($json);
    }

   大家可以参考一下!

原文地址:https://www.cnblogs.com/wxdblog/p/6873501.html