PHP json_encode() 函数介绍

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

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

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

程序运行结果如下:

view source
print?
1{"Name":null,"Age":20}

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

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

这个程序的运行结果为:

view source
print?
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 *************************************************************/
11function 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 *************************************************************/
43function 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  
56echo JSON($array);
57?>

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

view source
print?
1{"Name":"希亚","Age":"20"}

转载于:https://www.cnblogs.com/ymj0906/archive/2012/07/12/2587972.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小波变换原理_小波变换的知识,转载的

一、绘制原理&#xff1a;需要用到的小波工具箱中的三个函数cwt()&#xff0c;centfrq()&#xff0c;scal2frq()。具体参数及用途介绍如下&#xff1a;&#xff08;1&#xff09;COEFS cwt(S,SCALES,wname)该函数实现连续小波变换&#xff0c;其中S为输入信号&#xff0c;SCAL…

c语言逆序数输三个数,C语言求助!一个三位数的逆序数,总是编不对

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include int main(){int n,a,b,c,sum,ge,shi,bai;printf("请输入一个三位整数&#xff1a;\n");scanf("%d",&n);nfabs(n);an/100;b(n-a*100)/10;cn%10;if(a>b&&b>c){gec…

不让伤害再次发生

不让伤害再次发生我是英特尔成都工厂的第二批员工,在上海工厂学习培训之后,于2005 年加入到成都封装测试工厂的启动和生产工作中,到2010 年,我已经在成都工厂工作了五年半。在这五年半时间里,我始终在封装工程部任工程师,负责站点的设备、工艺和质量,确保站点按照相关计划和流程…

撩妹学会这一招,就没有人能拒绝你!

1 为了恋爱学会了 PS&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 二十不惑&#xff0c;手很迷惑▼3 怀疑家里的猫是「人变的」&#xff08;via.七七和铲屎官&#xff09;▼4 云南人有多喜欢吃菌子&#xff08;via.车夫&#xff09;&#xff08;请勿模仿&…

Javascript:阻止浏览器默认右键事件,并显示定制内容

在逛一些知名图片社区的时候&#xff0c;遇到自己心怡的图片&#xff0c;想要右键另存的时候&#xff0c;默认的浏览器菜单不见了&#xff0c;却出现了如&#xff1a;[©kevin版权所有]之类的信息&#xff1b; 今天在看Javascript事件默认行为相关的知识&#xff0c;所以&a…

【慢慢学算法】:查找第k小数

题目描述&#xff1a;查找一个数组的第K小的数&#xff0c;注意同样大小算一样大。 如 2 1 3 4 5 2 第三小数为3。 输入&#xff1a;输入有多组数据。每组输入n&#xff0c;然后输入n个整数(1<n<1000)&#xff0c;再输入k。 输出&#xff1a;输出第k小的整数。 样例输入…

Dapr + .NET 实战(十三)跨语言开发

欢迎大家参加4小时Dapr.NET 5的实战课程课程链接 https://ke.qq.com/course/4000292?tuin1271860f因为基于Dapr的服务架构是不限语言的&#xff0c;我们来看看Dapr的跨语言开发。我们使用golang&#xff0c;python&#xff0c;.NET来实现跨语言的服务调用&#xff0c;拓扑…

linux 压缩成bz2,linux 将文件压缩成bz2格式 命令:bzip2

bzip2命令用于创建和管理(包括解压缩)“.bz2”格式的压缩包。我们遇见Linux压缩打包方法有很多种&#xff0c;以下讲解了Linux压缩打包方法中的Linux bzip2命令的多种范例供大家查看&#xff0c;相信大家看完后会有很多收获。语法bzip2 (选项 ) (参数)选项-c或——stdout&am…

飞机上的排泄物都去哪里了?直接冲下来?

全世界只有3.14 % 的人关注了爆炸吧知识火车想必大家都知道&#xff0c;上完厕所&#xff0c;来也冲冲&#xff0c;去也冲冲&#xff0c;直接拥抱大地&#xff01;所以进站都会锁厕所门~那么飞机上也是这样吗&#xff1f;飞机上早期的厕所 早期&#xff0c;飞机上的马桶和普通…

Android去掉顶部的阴影

首先定义一个style <style name"Theme.IOSched" parent"android:style/Theme.Light"> <item name"android:windowNoTitle">true</item><item name"android:windowContentOverlay">null</item></sty…

.NET 基金会项目介绍 - ReactiveUI

ReactiveUI 是属于 .Net 基金会的一个项目&#xff0c;本文将简要介绍该项目相关的信息。中文介绍中文介绍内容翻译自英文介绍&#xff0c;主要采用意译、如与原文存在出入&#xff0c;请以原文为准。ReactiveUIReactiveUI 是一个可用于所有 .Net 平台的可组合的 MVVM 框架&…

NPOI 删除指定的行

http://jiajietieren.blog.163.com/blog/static/60186942201261673517542/转载于:https://www.cnblogs.com/ajie1212/archive/2012/07/16/2594125.html

最具体的历史centos下一个 postfix + extmail + dovecot + maildrop 安装注意事项2014更新...

这篇文章原本是2008年发表的&#xff0c;近期几天照此笔记又安装了一遍系统。这里更新一下记录。作者&#xff1a;wangdy本文发表于 http://blog.csdn.net/aryang/article/details/40593283 转载请注明&#xff01;1. 概述 安装环境是CentOS6.5&#xff0c;拿到server的时候仅…

android 只能输入汉字,EditText限制输入的几种方式及只显示中文汉字的做法

前段时间项目中有个需求是要求只能输入汉字&#xff0c;并且不能输入偏旁部首&#xff0c;于是总结了下EditText限制输入的几种方式&#xff0c;但是对于语音输入的还没找到好的解决方案&#xff1a;通过设置EditText的inputType来限制&#xff0c;可以在xml或者java代码中设置…

plsql导出表结构到excel_plsql怎么导出表格!如何用plsql从oracle中导入导出数据

如何将plsql内多个窗口查询结果同时导出到excel内在PL/SQL工具中执行得到的可以导出放在同一个EXCEL的多个Sheet页签的&#xff0c;操骤为&#xff1a;选中其中一个结果集中数据→右键→复制到Excel→作为xls复制所有(or作为xlsx复制所有)→完成。操作截图&#xff1a;Excel展示…

史上最强悍的一张图,没有任何一个中国人能躲得开!

▲ 点击查看几乎每个家庭都会有两张地图&#xff1a;一张世界地图&#xff0c;一张中国地图。薄薄的两张纸&#xff0c;蕴藏着让每个人学会“看世界”的磅礴力量。哈佛上一任校长&#xff0c;也是300多年来唯一一位女校长德鲁吉尔平福斯特&#xff08;Drew Gilpin Faust&#x…

解决vista/win7安装windows live messenger 2011找不到wlidcli.dll及错误800488eb .

问题一&#xff1a;找不到文件wlidcli.dll。 这个问题可能是由于修改了默认的Common Files 文件夹所在磁盘造成的。默认的位置是“C:/Program Files (x86)/Common Files/microsoft shared/Windows Live”&#xff0c;比如被改到了“D:/Program Files (x86)/Common Files/micros…

Dapr牵手.NET学习笔记:可观测性-分布式跟踪

分布式跟踪在dapr里是开箱即用的&#xff0c;不需要对应用作任何一丁点的侵入式编程。之前的开发&#xff0c;如果想实现分式跟踪&#xff0c;就得在应用中埋点&#xff0c;这是一个与业务无关系的动作。dpar通过sidecar可以轻松做到这点&#xff0c;从而让程序员更多精力投入到…

mysql cookbook 1

show databases; use [database]; show tabels;GRANT ALL ON database.* TO user localhost IDENTIFIED BY password;>mysql -h localhost -p -u user;转载于:https://www.cnblogs.com/chhyong88/archive/2012/07/22/2603592.html

新人入职培训有关职场沟通的总结分享

沟通 不要越级沟通言必成三&#xff0c;超过3点记不住的。kiss原则&#xff0c;keep it simple and stupid说事实观点先说结论与重点&#xff0c;再说细节支撑结论&#xff1a;mece原则&#xff0c;穷尽且不交叉提问最好不要问是或否的问题&#xff0c;而是开放性问题。 是或否…