PHP json_encode() 函数详解及中文乱码问题
分类:计算机教程

最近在做一个移动端前端项目,需要大量处理php后台开发同事返回给我的json数据,但是返回的数据格式不是很规范,导致我这边经常会出现以下图各种格式问题:

在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。

美洲杯赔率 1

这个函数的功能是将数值转换成json数据存储格式。

于是我就加上JSON.parse

<?php
$arr = array
  (
   'Name'=>'希亚',
   'Age'=>
  );
$jsonencode = json_encode($arr);
echo $jsonencode;
?>

但是,又很坑爹了,这个json没问题,其他一些json又出现问题了,如下图:

程序运行结果如下:

美洲杯赔率 2

{"Name":null,"Age":}

解决:判断后台返回的数据格式是否字符串,是则转,不是则不转

json_encode 函数中中文被编码成 null 了,Google 了一下,很简单,为了与前端紧密结合,Json 只支持 utf- 编码,我认为是前端的 Javascript 也是 utf- 的原因。

代码如下:

<?php
$array = array
 (
  'title'=>iconv('gb','utf-','这里是中文标题'),
  'body'=>'abcd...'
 );
echo json_encode($array);
?>
var $obj = (typeof data.content == 'string') ? JSON.parse(data.content):data.content

这个程序的运行结果为:

以上这篇快速解决处理后台返回json数据格式的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

{"title":"u8fd9u91ccu662fu4e2du6587u6807u9898","body":"abcd..."}

您可能感兴趣的文章:

数组中所有中文在json_encode之后都不见了或者出现u2353等。

解决方法是用urlencode()函数处理以下,在json_美洲杯赔率,encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。

<?php
/**************************************************************
 *
 * 使用特定function对数组中所有元素做处理
 * @param string &$array  要处理的字符串
 * @param string $function 要执行的函数
 * @return boolean $apply_to_keys_also  是否也应用到key上
 * @access public
 *
 *************************************************************/
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
 static $recursive_counter = ;
 if (  $recursive_counter > ) {
  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--;
}
/**************************************************************
 *
 * 将数组转换为JSON字符串(兼容中文)
 * @param array $array  要转换的数组
 * @return string  转换得到的json字符串
 * @access public
 *
 *************************************************************/
function JSON($array) {
 arrayRecursive($array, 'urlencode', true);
 $json = json_encode($array);
 return urldecode($json);
}
$array = array
  (
   'Name'=>'希亚',
   'Age'=>
  );
echo JSON($array);
?>

这次成功了,运行结果如下:

{"Name":"希亚","Age":"20"}

下面给大家介绍PHP json_encode中文乱码解决方法

相信很多人在使用Ajax与后台php页面进行交互的时候都碰到过中文乱码的问题。JSON作为一种轻量级的数据交换格式,备受亲睐,但是用PHP作为后台交互,容易出现中文乱码的问题。JSON和js一样,对于客户端的字符都是以UTF8的形式进行处理的,也就是说,使用JSON作为提交和接收的数据格式时字符都采用UTF8编码处理,当我们的页面编码和数据库编码不是采用UTF8的时候,就极容易出现中文乱码的问题。解决办法自然是在用js或者PHP处理JSON数据的时候都采用UTF8的形式

本文由美洲杯赔率发布于计算机教程,转载请注明出处:PHP json_encode() 函数详解及中文乱码问题

上一篇:ruby 存取器 概念 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • ruby 存取器 概念
    ruby 存取器 概念
     前面一节的 Fruit 类有两个实变量,分别表述水果的类型和状态.直到为这个类写了一个定制的inspect方法,我们方才了解它不会对一个缺乏属性的水果做出合
  • thinkphp美洲杯赔率: 内置字符串截取函数
    thinkphp美洲杯赔率: 内置字符串截取函数
    在thinkphp模板引擎里可以这样写:{$vo.title|msubstr=0,5,’utf-8′,false} thinkphp内置了一个可以媲美smarty的模板引擎,给我们带来了很大的方便。调用函数也一样,
  • 新瓶旧酒ASP.NET AJAX(1) - 简单地过一下每个控件(
    新瓶旧酒ASP.NET AJAX(1) - 简单地过一下每个控件(
    % @ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Sample.aspx.cs"     Inherits="Overview_Sample" Title="最简单的示例" % asp:Content ID="Content1" 
  • JavaScript 多级联动select
    JavaScript 多级联动select
    请到这里看09-08-18更新版本 能够根据自定义的菜单数据和select,自动设置联级的下拉菜单,可定义默认值。 类似的多级浮动菜单网上也很多实例,但大部分
  • Bootstrap 2.2.2 发布,重要的 Bug 修复版本
    Bootstrap 2.2.2 发布,重要的 Bug 修复版本
    今天我们发布了 Bootstrap 2.2.2, 这是另外一个很大的 bugfix版本,主要是侧重于 CSS 和文档方面的问题修复,也有很小一部分的JS问题,主要包括: Docs: Asset