msgbartop
PHP语言, PHP扩展, Zend引擎相关的研究,技术,新闻分享 – 左手代码 右手诗
msgbarbottom

10 Oct 11 让Json更懂中文(JSON_UNESCAPED_UNICODE)

我们知道, 用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式, 还会在一定程度上增加传输的数据量.

<?php
echo json_encode("中文");

//"\u4e2d\u6587"

这就让我们这些在天朝做开发的同学, 很是头疼, 有的时候还不得不自己写json_encode.

而在PHP5.4, 这个问题终于得以解决, Json新增了一个选项: JSON_UNESCAPED_UNICODE, 故名思议, 就是说, Json不要编码Unicode.

看下面的例子:

<?php
echo json_encode("中文", JSON_UNESCAPED_UNICODE);

//"中文"

怎么样, 是不是让大家很开心的改动? 呵呵, 当然, Json在5.4还加入了: JSON_BIGINT_AS_STRING, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES等选项, 如果有兴趣, 大家可以参看: json_encode

不过, 还是要提醒下: PHP 5.4还处于开发阶段, 在最终release之前, 任何新特性都可能被调整或者更改. 如果大家有任何建议, 也欢迎反馈, 帮助我们使得PHP变得更好.

谢谢

更多更新信息, 请关注: Changelog


分享到:



Random Posts:

Tags: , ,

30 Responses to “让Json更懂中文(JSON_UNESCAPED_UNICODE)”

  1. infusionkendal.com |

    There’s certainly a lot to find out about this topic. I really like all the points you’ve made.

  2. JackVan |

    JSON_UNESCAPED_UNICODE 没有能够把一些特殊符号转义 导致无法decode

  3. http://faheemwebhost.com |

    Every weekend i used to go to see this site, as i wish for enjoyment, as this this
    web site conations genuinely nice funny material too.

  4. lorretta |

    I’ll immediately seize your rss as I can not to find your e-mail subscription hyperlink or e-newsletter service.
    Do you’ve any? Kindly allow me recognise in order that I may just subscribe.
    Thanks.

  5. 10个开发微信卡包时常见的问题 | 云秀网|在云上开发优秀的网站 |

    [...] Json新增了一个选项: JSON_UNESCAPED_UNICODE, 故名思议, 就是说, Json不要编码Unicode.让Json更懂中文(JSON_UNESCAPED_UNICODE) <?php <span class="sh_keyword">echo</span> <span [...]

  6. Trail |

    问一下,php 5.2的要实现这个有什么别的方法吗?

  7. 不转义中文字符的 json 编码方法 | 吃货的美好时代!搜集美食、旅游、娱乐、时尚与吃货们分享 |

    [...] 参考资料:http://www.laruence.com/2011/10/10/2239.html [...]

  8. yangball |

    json_encode有第二个参数,
    相对应的 json_decode 呢??
    第二个参数是否解成object ? array 的。。

    那新增加的呢,这个是乍样处理。

  9. stevelu |

    现在还不没升级5.4,请问有没有现成的支持中文的json_encode嘛?

  10. liuxd |

    啊哈,这个改动很棒啊!话说5.4啥时候发布啊?有比较准确的时间表吗?

  11. zeg |

    哦哦哦哦哦哦哦!终于有人改这个了!

    我一直想发信和你说这事呢~

  12. kevin |

    直接输出UTF8的汉字字符串,并不符合JSON标准,这个怎么考虑的?

    JSON.ORG的字符串说明:

    string
    “”
    ” chars ”
    chars
    char
    char chars
    char
    any-Unicode-character-
    except-”-or-\-or-
    control-character
    \”
    \\
    \/
    \b
    \f
    \n
    \r
    \t
    \u four-hex-digits

    @see: http://json.org/string.gif

  13. kangzj |

    您好,如果想让把php 5.3的json.so升级到这个版本,应该如何操作呢。我用PEAR安装了json 1.2.1,发现并不支持此项功能,可以加我gtalk吗?就是我的email地址,谢谢!

  14. Shallker |

    虽然在客户端console.log直接打印出的是’类似”\u***”的格式’, 但是在用jQuery接收时先声明数据格式是json, 那么打出来的就还是正确的中文, 不是\u*的格式了. 推论出是不是在客户端需要先对json数据进行下解析.

  15. Anonymous |

    希望PHP同时实现64位和32位整数的支持,及无符号整数,这样也能解决ip2long的问题

  16. 大草原 |

    istrone | 11 Oct 2011 11:01
    对了,PHP好像还有一个bug,就是ip2long的返回值有时候会出现负数。

    sprintf(‘%u’, ip2long($ip));

  17. anthony |

    PHP 5.4是否真的对性能,内存使用有很大改善

  18. 朱宝祥 |

    正在学习json中,感觉你什么都懂。。

  19. 转烛 |

    昨天还正在为这个苦恼呢,没想到今天就看到这个内容。

  20. 小桑 |

    哈哈,太爽了。

  21. 雪候鸟 |

    @wclssdn 后退, 内容还在.

  22. wclssdn |

    - – 鸟哥能加个插件不.. 当我敲错验证码的时候, 把评论保留… 白打那么多字了..

  23. rainkid |

    使用下面命令:
    php -r “var_dump(json_encode(’1′));”
    输出是:
    string(3) “”1″”
    为什么会有两层引号?

  24. dvaknheo |

    追加 parse_url 的逆函数吧。

    很讨厌每次都要去 评论里 抄 glue_url

  25. 小鑫 |

    这个属性比较好,期待中呀

  26. darasion |

    我不觉得这个特性好。虽然一时看着爽,接踵而来的编码问题将会产生广泛而深入的影响。

  27. jueying |

    不错,很实用!持续关注中!

  28. istrone |

    对了,PHP好像还有一个bug,就是ip2long的返回值有时候会出现负数。

  29. jeffliu |

    超爱这个。
    json_encode编码中文非常的恶心。
    json_encode也会把大值int使用科学计数法表示 恶心死。

  30. jackywdx |

    喔,这个特性很爽啊。

Leave a Reply

*