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

Web server response generates UTF-8 (BOM) JSON

我有一个 ZF2 应用程序,其方法 returns JSON 格式化数组使用:

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

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

好像JSON的无效是第一个花括号引起的,我重新输入时,似乎没问题。因此,我怀疑文件开头有一些 BOM 字符。

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

你们知道是什么导致了我们 PHP/Apache 环境中的这种差异吗?

感谢您的帮助。 此致,

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

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

我通过从我的配置文件中删除这些额外的 BOM 字符解决了这个问题,并将 UTF8(带 BOM)文件转换为 UTF8 w/o BOM。

在这里查看我是如何找出导致问题的文件的: