Web服务器响应生成UTF-8(BOM)JSON

我有一个ZF2应用程序,其方法使用以下命令返回JSON格式的数组:

$response->setContent(json_encode($reponse)); return $response; 

请求是通过Ajax使用jQuery 1.10.2发送的,当我拦截响应体时,使用开发者模式或Fiddler,我可以在http://jsonlint.com/中看到JSON无效。 因此,我的Ajax成功回调是通过IE8触发的,但是对于更新版本或浏览器(如Firefox或Chrome),它会直接转到错误回调。

似乎JSON的无效性是由第一个大括号引起的,当我重新键入它时,似乎没问题。 因此,我怀疑文件开头有一些BOM字符。

甚至更奇怪的是,使用完全相同的源代码,我的客户端在他的环境中完全没有使用Internet Explorer 10的问题。

你们有没有想过在我们的PHP / Apache环境中会出现什么样的差异?

谢谢您的帮助。 问候,

问题确实是由某些文件中出现的一些BOM字符引起的。

我的config.Global.conf文件是用UTF8(带有BOM)编码的,加上它在开头这个,我用VIM打开它时可以看到。

我通过从配置文件中删除这些额外的BOM字符来修复此问题,并将UTF8(带BOM)文件转换为UTF8(无BOM)。

点击这里查看我是如何找出导致问题的文件: 在Zend Framework 2中查找BOM的来源