php 解决json输出中文为null
来源:互联网 发布:网络协议是指 编辑:程序博客网 时间:2024/06/06 02:44
今天使用json_encode函数,发现中文竟成了null。
原因分析:使用json_encode函数应应使用utf-8编码,我的页面用的是gbk.
解决:在json_encode函数前使用iconv('gbk','utf8')函数。函数
function gbk2utf8($data)
{
if(is_array($data))
{
return array_map('gbk2utf8', $data);
}
return iconv('gbk','utf-8',$data);
}
//以下是找的另一种方法
php从数据库中得到的字段是中文,想用json_encode()后返回给前台,可是json_encode对中文编码后为null。
在 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()将编码过的中文转回来。
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"
}
- php 解决json输出中文为null
- 解决json接口数据中文显示为null的问题
- php json中文编码为null 的解决办法
- php 解决json gbk编码中文null问题
- 解决PHP 编码中文返回时为null的问题
- ssh 输出json为null问题
- PHP 输出中文 JSON 字符串
- PHP 输出中文 JSON 字符串
- php 服务器端解决json_decode()的bug 输出为null, json_last_error函数为4语法错误
- php file_get_contents json_decode 输出为NULL
- PHP下解决Json中文
- php解决aes,base64后的json字符串json_decode为null的问题
- spring mvc 输出json 值为null 不输出
- PHP在输出json格式时不能显示中文(已解决)
- php如何输出中文json格式字符串
- php 输出 json 中文不改变
- PHP 输出JSON中文字符处理
- 解决NLog输出中文为乱码问题
- iOS的动画
- Git概念:什么是分支
- cocos2dx读写json文件
- 比较全面的gdb调试命令
- iOS SDK中使用NSXMLParser解析XML
- php 解决json输出中文为null
- 实例化代码
- 什么是卷积 卷积有什么用 什么是傅利叶变换 什么是拉普拉斯变换
- 【工具使用】git 的使用
- C++ 溢出与越界
- Monitor the changes in EOImpl.java side
- nodejs开发指南阅读记录
- windows系统中python2,python3共存的设置方法
- linux下NIS搭建