就是我做了一個PHP介面,返回的資料是json格式(資料格式沒問題,且編碼是utf8格式);但調用時無法解析這個json格式的資料,但我把返回的資料複製成字串,就可以解析了。找了半天,發現在輸出的源碼前面多了空白,但是這個空白不能通過trim 去空格的方式解決,類比請求介面,用了去bom頭的方式 trim($result, "\xEF\xBB\xBF"); 還是無法解析,請教一下有遇到過這個問題的嗎
回複討論(解決方案)
那就是你json_encode輸出那塊沒寫好 有沒有聲明 header('Content-type:application/json;charset=utf-8');
應該是 BOM 頭的影響
$result = trim($result, "\xEF\xBB\xBF");
只是去除了 $result 中的 BOM
並沒有去除你 php 程式檔案的 BOM
建一新程式
echo bin2hex(file_get_contents('http://yourhost/api.php'));j執行後就可看到是否有 BOM
應該是 BOM 頭的影響
$result = trim($result, "\xEF\xBB\xBF");
只是去除了 $result 中的 BOM
並沒有去除你 php 程式檔案的 BOM
建一新程式
echo bin2hex(file_get_contents('http://yourhost/api.php'));j執行後就可看到是否有 BOM
應該是 BOM 頭的影響
$result = trim($result, "\xEF\xBB\xBF");
只是去除了 $result 中的 BOM
並沒有去除你 php 程式檔案的 BOM
建一新程式
echo bin2hex(file_get_contents('http://yourhost/api.php'));j執行後就可看到是否有 BOM
應該是 BOM 頭的影響
$result = trim($result, "\xEF\xBB\xBF");
只是去除了 $result 中的 BOM
並沒有去除你 php 程式檔案的 BOM
建一新程式
echo bin2hex(file_get_contents('http://yourhost/api.php'));j執行後就可看到是否有 BOM
可以看到有這些輸出 前端有這些輸出
2020efbbbf7b22737461747573223a302c226d657373616765223a225c75396138635c7538626
那應該怎麼去掉檔案裡bom頭呢
前面的 2020efbbbf
2020 表示有兩個空格
efbbbf 不就是 bom 嗎?
應該是 BOM 頭的影響
$result = trim($result, "\xEF\xBB\xBF");
只是去除了 $result 中的 BOM
並沒有去除你 php 程式檔案的 BOM
建一新程式
echo bin2hex(file_get_contents('http://yourhost/api.php'));j執行後就可看到是否有 BOM
謝謝版主的熱心回答,問題終於解決了 把所有相關檔案都查了下 找到了包含bom頭的檔案 重新編輯了一下 可以解析json 了
notepad++可以將檔案轉為無BOM格式
可以看下這篇日誌:http://my.oschina.net/rain21/blog/384549
notepad++可以將檔案轉為無BOM格式
可以看下這篇日誌:http://my.oschina.net/rain21/blog/384549
謝謝你的回答 我試試