我正在使用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