免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1543 | 回复: 0
打印 上一主题 下一主题

PHP中非UTF-8编码下的JSON处理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-18 23:26 |只看该作者 |倒序浏览
PHP自带的json_encode只支持UTF-8编码,其他编码的需要转到UTF-8编码下才能使用。下面是自己写的处理这个问题的函数,分享给大家,希望能对大家有用。注释很详细了,就不说多了,直接看吧。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
+------------------------
json_encode 增强版 可将任意编码的变量编码为json字符串
$in 要处理的变量
$charset 编码
+------------------------
**/
function json_encode_set($in,$charset)
{
    return json_encode(iconv_all($charset,'UTF-8',$in));
}

/*
+------------------------
json_decode 增强版
上面json_encode_set的逆运算
$in 要处理的json字符串
$charset 编码
$assoc 返回值 false对象 true数组
+------------------------
**/
function json_decode_set($in,$charset='UTF-8',$assoc='false')
{
    return iconv_all('UTF-8',$charset,json_decode($in,$assoc));
}

/*
+------------------------
iconv 增强版
参数同iconv
原版iconv只能接受字符串
这里的$in可以接受字符串、数组、对象
+------------------------
**/
function iconv_all($in_charset,$out_charset,$in)
{
    if(is_string($in))
    {
        $in=iconv($in_charset,$out_charset,$in);
    }
    elseif(is_array($in))
    {
        foreach($in as $key=>$value)
        {
            $in[$key]=iconv_all($in_charset,$out_charset,$value);
        }
    }
    elseif(is_object($in))
    {
        foreach($in as $key=>$value)
        {
            $in->$key=iconv_all($in_charset,$out_charset,$value);
        }
    }

    return $in;
}

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/59571/showart_1903713.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP