我正在使用 JSON 和 cURL 实现两个服务器之间的通信。问题是,有时 JSON 回复中的开括号之前会附加 BOM(字节顺序标记)。我已经设法修剪它并成功解析 JSON 字符串,但考虑到 JSON 是由我自己的代码生成的,我不知道该 BOM 从哪里来。
我使用 json_encode() 生成回复,并使用 header() + echo 打印它,据我所知,json_decode() 不会生成任何 BOM。相应的 .php 文件以 UTF-8 编码,并且其中没有 BOM(根据 Notepad++)。除了 cURL 之外,我还尝试使用 Chrome 和 python (urllib2) 执行请求。虽然 Chrome 根本不注册任何 BOM,但 Python 经常因此无法解析传入的 JSON。
那么,使用 echo 是否存在一些细微差别,以某种方式产生这样的结果?我应该从哪里开始寻找问题的根源以及解决方案是什么?
我有同样的问题。我从 PHP 输出 json,页面顶部还包含其他类文件。这些文件没有输出任何内容,但是当它们被包含时,我得到的字节顺序标记与包含的文件一样多。因此,如果我有 4 个包含项,那么我的 json 开头也有 4 个 BOM。
我确保包含内容不会打印任何数据,并且 PHP 标记之外没有杂散的回车符。我尝试了“application-json”等标头,但没有任何效果。
到底,我只是在记事本++中打开每个PHP文件,转到“编码”并将其从UTF-8更改为ANSI,然后保存。这就是让它工作并返回有效 json 所需的全部工作。我根本没有对 PHP 进行任何代码更改。
这个解决方案感觉仍然不太理想。由于我们没有从这些包含的文件中输出任何内容,因此不应受到任何影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)