PHP 的 json_encode 异常

最近在做一个老的 PHP 项目的时候,json_encode 没有返回任何数据。


这是因为 json_encode 在处理字符的时候有不是 UTF-8 的字符异常了。

解决办法

其实这个方法提供了 JSON_UNESCAPED_UNICODE 参数

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

<?php
echo json_encode("中文");
//"\u4e2d\u6587"

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

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