我正在使用jQuery从端点检索json响应
die(json_encode(array('success' => 3, 'message' => 'You must use at least 1 credit or more.')));
每当我检查Chrome开发人员工具中收到的JSON响应时,我都会看到一个红点,表示在json响应之前添加了\ ufeff。我在Notepad ++中使用UTF-8对PHP文件进行了编码,但它仍然添加了任何响应的BOM字符。如果我返回任何内容或更改模具,它仍会在响应中显示BOM字符。
我在我的localhost上尝试了相同的文件,但它的工作方式非常好,但是在服务器上添加了该字符。
我对导致问题的原因感到茫然,我们将非常感谢任何帮助。
答案 0 :(得分:1)
有一些解决方法(在脚本启动时删除所有PHP文件中的BOM,ob_clean
),但真正的解决方案是使用--enable-zend-multibyte
或--enable-mbstring
编译PHP,或者等到它由PHP团队修复。
由于您有时无法控制托管环境中的PHP版本和编译标记,因此我更倾向于从所有PHP文件中删除BOM,以防止出现此类问题。这适用于任何服务器。
您的解决方案是使用JS修复输出。但对于其他用途,例如通过PHP生成图像或其他二进制数据,或发送标题,你无法解决这个问题。
答案 1 :(得分:0)
这似乎是这个服务器配置的一个问题,因为它适用于其他服务器。与此同时,我在解析JSON响应之前使用javascript过滤了响应以删除任何BOM字符。