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

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

01 <?php
02 $arr array
03        (
04           'Name'=>'希亚',
05           'Age'=>20
06        );
07  
08 $jsonencode = json_encode($arr);
09 echo $jsonencode;
10 ?>

程序运行结果如下:

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

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

1 <?php
2 $array array
3     (
4         'title'=>iconv('gb2312','utf-8','这里是中文标题'),
5         'body'=>'abcd...'
6     );
7  
8 echo json_encode($array);
9 ?>

这个程序的运行结果为:

1 {"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."}

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

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

view source print?
01 <?php
02 /**************************************************************
03  *
04  *  使用特定function对数组中所有元素做处理
05  *  @param  string  &$array     要处理的字符串
06  *  @param  string  $function   要执行的函数
07  *  @return boolean $apply_to_keys_also     是否也应用到key上
08  *  @access public
09  *
10  *************************************************************/
11 function arrayRecursive(&$array$function$apply_to_keys_also = false)
12 {
13     static $recursive_counter = 0;
14     if (++$recursive_counter > 1000) {
15         die('possible deep recursion attack');
16     }
17     foreach ($array as $key => $value) {
18         if (is_array($value)) {
19             arrayRecursive($array[$key], $function$apply_to_keys_also);
20         else {
21             $array[$key] = $function($value);
22         }
23   
24         if ($apply_to_keys_also && is_string($key)) {
25             $new_key $function($key);
26             if ($new_key != $key) {
27                 $array[$new_key] = $array[$key];
28                 unset($array[$key]);
29             }
30         }
31     }
32     $recursive_counter--;
33 }
34   
35 /**************************************************************
36  *
37  *  将数组转换为JSON字符串(兼容中文)
38  *  @param  array   $array      要转换的数组
39  *  @return string      转换得到的json字符串
40  *  @access public
41  *
42  *************************************************************/
43 function JSON($array) {
44     arrayRecursive($array'urlencode', true);
45     $json = json_encode($array);
46     return urldecode($json);
47 }
48  
49 $array array
50        (
51           'Name'=>'希亚',
52           'Age'=>20
53        );
54  
55  
56 echo JSON($array);
57 ?>

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

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

转载于:https://www.cnblogs.com/moqiang02/p/4061406.html

PHP json_encode() 函数介绍相关推荐

  1. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

  2. C语言中的scanf()函数介绍

    1.scanf函数:读取从键盘输入的数据 在C语言中,有多个函数可以从键盘获得用户输入: scanf():和 printf() 类似,scanf() 可以输入多种类型的数据 getchar().get ...

  3. 延时函数介绍和呼吸灯的实现

    文章目录 延时函数介绍 呼吸灯原理 杨桃32学习笔记,本文图片文字皆为转述 延时函数介绍 分为delay_s秒,delay_ms毫秒,delay_us微秒延时,最大参数不能超过65535. 呼吸灯原理 ...

  4. ×××S 2012 参照函数 -- 介绍

    ×××S 2012 参照函数 -- 介绍 在×××S中,一张报表内可以同时包含多个数据集,但是一个数据区域就仅限于一个数据集,如果希望同时参考多个数据集,查找函数就能轻松办到,其概念类似JOIN是通过 ...

  5. 【 MATLAB 】rem 函数介绍

    rem函数和mod函数很相似,二者认真看一个,另一个看一下区别即可. mod函数介绍:[ MATLAB ]mod 函数介绍 rem Remainder after division Syntax r ...

  6. 【 MATLAB 】filter 函数介绍 之 Filter Data in Sections

    [ MATLAB ]filter 函数介绍(一维数字滤波器) 在上篇博文中,里面有一个例子,就是过滤部分中的数据,这个部分中的数据的意思是如果有一个向量需要过滤,我们可以把它分为几段,然后分段过滤. ...

  7. swift1.2语言函数和闭包函数介绍

    swift1.2语言函数和闭包函数介绍 在编程中,随着处理问题的越来越复杂,代码量飞速增加.其中,大量的代码往往相互重复或者近似重复.如果不采有效方式加以解决,代码将很难维护. swift1.2语言函 ...

  8. 微信 php 接口 函数,PHP的json_encode函数应用到微信接口有关问题(include \uxxxx will create fail)...

    PHP的json_encode函数应用到微信接口问题(include \uxxxx will create fail) 今天学习了一下微信企业号发送消息的接口,发现在发送含有中文字符的信息时,微信接口 ...

  9. php函数介绍,PHP函数介绍_PHP教程

    PHP函数介绍 基本使用: 函数定义形式: function 函数名(形参1,形参2,...) { //函数体(代码块): } 函数调用形式: 本质上就是使用一个名字来达到执行其中函数中的的作用.通常 ...

最新文章

  1. linux存储--虚拟内存详解MMU、页表(十)
  2. mysql 5.0 乱码_MySQL 5.0.16 乱码问题处理办法
  3. Endnote生成的中英文混排参考文献中“等”与“et al”的处理
  4. python多维数组初始化后赋值的问题
  5. 不忽略空值null的聚合函数_sqlzoo 练习题答案 聚合函数 和 空值 部分
  6. 不招聘数据科学家的 7 个理由!
  7. 浅谈TCP优化(转)
  8. CFS 调度器学习笔记
  9. unity 运行时间问题
  10. 对象和map的相互转换
  11. 英语打字练习软件-c语言编写
  12. 【安卓开发 身份录入系统 APP】
  13. Ruby ERB注入反序列化
  14. ros学习记录1 Hello World 使用c++
  15. python如何画神经网络特征图
  16. JS学习108-161
  17. python发票二维码条码识别_Python实现二维码、条形码识别
  18. 通过Timer和UpdatePanel控件实现NBA比赛的文字直播
  19. seo搜索引擎优化,seo搜索引擎优化名词解释
  20. 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一1.9 逆光拍摄透明体

热门文章

  1. CSS3新的鼠标样式介绍
  2. 网站性能优化之应用程序缓存-初篇
  3. ajax后台如何把对象转为json_57. Django 2.1.7 查询数据返回json格式
  4. 用户方式中线程的同步——Windows核心编程学习手札之八
  5. r语言x%3c-读取文件,R语言读写最灵活的文件——txt文件
  6. 列举出php代码级的优化技巧,php 代码优化的42条建议 推荐
  7. python中的栈结构_对Python列表进行封装和二次开发实现自定义栈结构
  8. 50. Pow(x, n)
  9. profiles 配置详解
  10. 获取请求参数通用方式|| 中文乱码问题||请求转发