錯誤原因:
BOM報頭問題。服務(wù)器端是php,返回的接送數(shù)據(jù)’{‘前有bom報頭,java讀的時候把報頭直接當(dāng)作文件內(nèi)容讀,然后就會出錯。
什么是BOM報頭?
BOM報頭又叫UTF-8簽名,其實UTF-8 的BOM對UFT-8沒有作用,是為了支援UTF-16、UTF-32才加上的BOM。
BOM簽名的意思就是告訴編輯器當(dāng)前文件采用何種編碼,但是BOM雖然在編輯器中不顯示,但是會產(chǎn)生輸出,就像多了一個空行。它是一串隱藏的字符,用于讓記事本等編輯器識別這個文件是否以UTF-8編碼。
解決方法:
java、android客戶端等可以通過代碼過濾掉bom,然后再解析。
/** * 去除bom報頭 */ public static String formatString(String s) { if (s != null) { s = s.replaceAll("ufeff", ""); } return s; }
推薦教程:PHP視頻教程