- 本文地址: https://www.laruence.com/2011/10/10/2239.html
- 转载请注明出处
我们知道, 用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
现在遇到个问题,用户昵称里有emoji表情,接口通过php输出json的时候,进行了json_encode,这样表情的unicode被转换成了html实体,有没有办法让它转换的时候跟中文这种似的,不转换呢?找了半天json_encode里相关设置的参数,没找到能干这个事的。
[…] 让Json更懂中文(JSON_UNESCAPED_UNICODE) […]
非常感谢,解决困扰几天的问题。
[…] 让Json更懂中文(JSON_UNESCAPED_UNICODE) […]
[…] 事后突然意识到公司平台的很多接口返回的json数据中文都是没有编码的,于是在进一步的了解中看到了鸟哥的这篇文章《让Json更懂中文(JSON_UNESCAPED_UNICODE)》,文章开头的这句话让我认识到了自己的想当然。 用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”u***”的格式, 还会在一定程度上增加传输的数据量. […]
[…] 原文地址:戳这儿 […]
[…] 让Json更懂中文(JSON_UNESCAPED_UNICODE) […]
[…] 本文地址: http://www.laruence.com/2011/10/10/2239.html […]
[…] http://www.laruence.com/2011/10/10/2239.html […]
super brilliant
[…] 本文地址: http://www.laruence.com/2011/10/10/2239.html […]
There’s certainly a lot to find out about this topic. I really like all the points you’ve made.
JSON_UNESCAPED_UNICODE 没有能够把一些特殊符号转义 导致无法decode
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.
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.
[…] Json新增了一个选项: JSON_UNESCAPED_UNICODE, 故名思议, 就是说, Json不要编码Unicode.让Json更懂中文(JSON_UNESCAPED_UNICODE) <?php <span class="sh_keyword">echo</span> <span […]
问一下,php 5.2的要实现这个有什么别的方法吗?
urlencode 来实现
[…] 参考资料:http://www.laruence.com/2011/10/10/2239.html […]
json_encode有第二个参数,
相对应的 json_decode 呢??
第二个参数是否解成object ? array 的。。
那新增加的呢,这个是乍样处理。
现在还不没升级5.4,请问有没有现成的支持中文的json_encode嘛?
啊哈,这个改动很棒啊!话说5.4啥时候发布啊?有比较准确的时间表吗?
哦哦哦哦哦哦哦!终于有人改这个了!
我一直想发信和你说这事呢~
直接输出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
您好,如果想让把php 5.3的json.so升级到这个版本,应该如何操作呢。我用PEAR安装了json 1.2.1,发现并不支持此项功能,可以加我gtalk吗?就是我的email地址,谢谢!
虽然在客户端console.log直接打印出的是’类似”\u***”的格式’, 但是在用jQuery接收时先声明数据格式是json, 那么打出来的就还是正确的中文, 不是\u*的格式了. 推论出是不是在客户端需要先对json数据进行下解析.
希望PHP同时实现64位和32位整数的支持,及无符号整数,这样也能解决ip2long的问题
istrone | 11 Oct 2011 11:01
对了,PHP好像还有一个bug,就是ip2long的返回值有时候会出现负数。
sprintf(‘%u’, ip2long($ip));
PHP 5.4是否真的对性能,内存使用有很大改善
正在学习json中,感觉你什么都懂。。
昨天还正在为这个苦恼呢,没想到今天就看到这个内容。
哈哈,太爽了。
– – 鸟哥能加个插件不.. 当我敲错验证码的时候, 把评论保留… 白打那么多字了..
@wclssdn 后退, 内容还在.
使用下面命令:
php -r “var_dump(json_encode(‘1’));”
输出是:
string(3) “”1″”
为什么会有两层引号?
追加 parse_url 的逆函数吧。
很讨厌每次都要去 评论里 抄 glue_url
这个属性比较好,期待中呀
我不觉得这个特性好。虽然一时看着爽,接踵而来的编码问题将会产生广泛而深入的影响。
不错,很实用!持续关注中!
对了,PHP好像还有一个bug,就是ip2long的返回值有时候会出现负数。
超爱这个。
json_encode编码中文非常的恶心。
json_encode也会把大值int使用科学计数法表示 恶心死。
喔,这个特性很爽啊。