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。
在这里查看我是如何找出导致问题的文件的:
我有一个 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。
在这里查看我是如何找出导致问题的文件的: