Php 使用JSON_encode进行奇怪的JSON编码

Php 使用JSON_encode进行奇怪的JSON编码,php,wordpress,Php,Wordpress,我正在使用WordPress和JSON API插件(http://wordpress.org/extend/plugins/json-api/)以生成对其他站点的响应 我遇到了一个非常奇怪的问题(我们使用的是PHP5.3.6),当我将以下数组传递给json_encode()时,它给出了以下结果(使用json内容类型): 因此,在上面的例子中,开头的垃圾是2609,最后是0,它根据响应的大小而变化,更多内容->更高的十六进制数。它也只有在响应量“足够高”时才会出现,因此它适用于较小的响应 首先,我

我正在使用WordPress和JSON API插件(http://wordpress.org/extend/plugins/json-api/)以生成对其他站点的响应

我遇到了一个非常奇怪的问题(我们使用的是PHP5.3.6),当我将以下数组传递给json_encode()时,它给出了以下结果(使用json内容类型):

因此,在上面的例子中,开头的垃圾是2609,最后是0,它根据响应的大小而变化,更多内容->更高的十六进制数。它也只有在响应量“足够高”时才会出现,因此它适用于较小的响应

首先,我认为它是一个插件,但它可以在本地工作(在两台不同的机器Mac OS X上),我们已经将VPS上的所有软件包(Debian、Apache、Nginx、PHP)更新为最新版本

它仅在发送内容类型时显示,在以纯文本而不是application/json输出$result时不显示:

$charset = get_option('blog_charset');
if (!headers_sent()) {
  header('HTTP/1.1 200 OK', true);
  header("Content-Type: application/json; charset=$charset", true);
}

echo $result;
$charset设置为utf-8

GoogleChrome控制台说:“资源被解释为文档,但使用MIME类型的application/json传输。”


那么,有人知道这里发生了什么吗?

json的一个要求是,您提供给它的所有数据都必须是UTF-8编码的。json_encode()不会自动执行此操作。因此,您可以尝试运行这个
array\u映射(“utf8\u encode”,$array)然后再进行json_编码


否则。。。它看起来很奇怪,所以我只是猜测…

这看起来像块编码()。确保检查您的标题是否在响应中正确设置了内容长度,以确保您没有强制web服务器使用CTE。

哪里初始化了$result?它是一个json_encode-d值吗?是的,它来自另一个处理内置json_编码的函数。我的标题是:HTTP/1.1 200 OK Server:nginx/0.6.32日期:Wed,2011年6月29日06:25:53 GMT内容类型:application/json;charset=UTF-8传输编码:分块连接:保持活动X-Powered-By:PHP/5.2.6-1+lenny10设置内容长度非常有效,谢谢!nginx也有同样的问题。。非常感谢这帮我省了很多麻烦