我正在使用JSON和cURL在两台服务器之间实现通信。问题在于,有时候会有BOM(字节顺序标记),在JSON回复中的开头括号之前附加。我已经设法修剪它并成功解析了JSON字符串,但考虑到JSON是由我自己的代码生成的,我不知道该BOM来自哪里。我使用json_encode()生成回复和标题()+回声来打印它,只要我不能告诉,json_decode()不会产生任何物料清单。相应的.php文件以UTF-8编码,并且没有BOM(根据Notepad ++)。除了cURL之外,我还尝试使用Chrome和Python(urllib2)执行请求。尽管Chrome根本没有注册任何物料清单,但python经常无法解析传入的JSON。BOM在JSON回复中随机出现
那么,有没有在使用echo一些细微之处,不知何故会产生这样的结果?我应该从哪里开始寻找问题的根源以及可能的解决方案?
您的JSON是否包含任何多字节字符?如果你没有明确地提出BOM,那么我可以想到的唯一原因就是如果PHP由于某种原因确定有必要在其中存在......此外,出于兴趣,什么是相关的PHP版本? – DaveRandom
不,JSON回复根本不包含多字节字符。我正在使用PHP 5.3.8 – Xifax
你是否在回声之前将JSON转储到文件中? – DaveRandom