注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

早衰男的巢

大音希声 道隐无名

 
 
 

日志

 
 

PHP:再三说json_encode的中文被unicode编码问题  

2015-05-19 13:24:51|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
续前面的两篇
《蛋碎了:微信公众号菜单创建接口的中文编码问题》
http://snmoney.blog.163.com/blog/static/44005820141254406993/
《PHP:再说json_encode的中文被unicode编码问题  》 
http://snmoney.blog.163.com/blog/static/440058201523123557787/

------------- 这是一条儒雅的分割线 ---------------
当时追寻的答案已经近在咫尺,就在上线两篇日记中,只是被自己忽略了
一直寻找的 在 php 5.4 以下版本实现json_encode("中文", JSON_UNESCAPED_UNICODE); 第二参数相同效果的方法

答案就在第一篇!!!
$str_json = urldecode(json_encode(urlencode($array))); 
但是还可能会遇到部分版本的php会报错(部分版本是支持的,额...真让人汗颜): urlencode($array) 不能urlencode非字符串的对象。

恩,还差一点点就ok了。我们把数组的处理稍微改改,写个递归

function arr_urlencode(&$array){
foreach($array as &$a){
if(is_array($a)){
arr_urlencode($a);
}else{
$a = urlencode($a);
}
}
}

arr_urlencode($array); //把$array已经进行了遍历和url编码
$str_json = urldecode(json_encode($array)); //完成~

============= 这是一条强壮的分割线 =============

下面来看看做个测试

unset($arr);
$arr['chs']="中文测试测试测试";
$arr['num']=13;
$arr["ascii"]='abc2212';
//输出
echo    "<xmp>[array]\n".print_r($arr,1); 
$json_org = json_encode($arr); //普通的json编码
//输出
echo        "\n\n[raw json_encode]\n{$json_org}";

//进行无unicode转码的json编码
function arr_urlencode(&$array){
foreach($array as &$a){
if(is_array($a)){
arr_urlencode($a);
}else{
$a = urlencode($a);
}
}
}
arr_urlencode($arr); //把$array已经进行了遍历和url编码
$json_new = urldecode(json_encode($arr)); //完成~

//输出
echo    "\n\n[json_encode unescape]\n{$json_new}</xmp>";

////////////////最后的输出效果/////////////////
[array]
Array(    [chs] => 中文测试测试测试
[num] => 13
[ascii] => abc2212
)

[raw json_encode]
{"chs":"\u4e2d\u6587\u6d4b\u8bd5\u6d4b\u8bd5\u6d4b\u8bd5","num":13,"ascii":"abc2212"}

[json_encode unescape]
{"chs":"中文测试测试测试","num":"13","ascii":"abc2212"}

  评论这张
 
阅读(396)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018