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

早衰男的巢

大音希声 道隐无名

 
 
 

日志

 
 

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

2015-03-31 15:49:21|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
曾在以前一篇说微信公众号菜单的日志里提及过json_encode()会把中文进行unicode编码的事情,当时是一句带过。

编码后一般情况不会有什么坏的影响,json_decode() 之后也别无二样可以正确的处理和读取。
只是如果在某些特定的情况下,当你需要encode后还是保持着可以肉眼阅读的中文(强制不unicode),就出现了下面的笔记

以下是一般的处理办法
方案1.  如果你的PHP环境是5.4 或以上版本,
那事情很简单 json_encode 加上第二参数 
echo  json_encode("中文", JSON_UNESCAPED_UNICODE);
例如这样,中文就不会被unicode化。

方案2. 如果是比较早期的PHP版本且环境受限不能升级php,可以尝试在客户端用js进行unicode的 decode
例如
<script>
var unicode_decode = function(str) {
    str=str.replace(/\\/g,"%"); 
    str= unescape(str); //把中文进行decode
    str=str.replace(/%n/g,"\\n"); //json中的 \n 会在第一行被转成 %n 转换回来
    str=str.replace(/%\//g,"/"); //同上,把 被替换成%/ 的换回 / ,
    //由于我这个应用中可能存在的就只有URI、\n换行、和中文三种情况,如有其他情况需要额外追加修正补充
    return str;
}

var str = unicode_decode($json); //对unicode编码过中文的json字符串进行解码成直显字符(utf8)
</script>



  评论这张
 
阅读(317)| 评论(0)
推荐 转载

历史上的今天

评论

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

页脚

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