1. 程式人生 > >android解析json出錯原因Bom頭

android解析json出錯原因Bom頭

google之後發現是BOM報頭問題。伺服器端是php,返回的接送資料’{‘前有bom報頭,java讀的時候把報頭直接當作檔案內容讀,然後就會出錯。
一般是伺服器端程式碼格式的問題

BOM報頭又叫UTF-8簽名,其實UTF-8  的BOM對UFT-8沒有作用,是為了支援UTF-16,UTF-32才加上的BOM,BOM簽名的意思就是告訴編輯器當前檔案採用何種編碼,方便編輯器 識別,但是BOM雖然在編輯器中不顯示,但是會產生輸出,就像多了一個空行,一般的php程式碼如果用記事本等軟體編輯儲存過之後,在儲存一個以UTF-8編碼的檔案時,會在檔案開始的地方插入三個不可見的字元(0xEF 0xBB  0xBF,即BOM)。它是一串隱藏的字元,用於讓記事本等編輯器識別這個檔案是否以UTF-8編碼。(還不清楚為什麼會在返回資料時候也自動加上了BOM報頭)。

java、android客戶端等可以通過程式碼過濾掉bom,然後再解析。

/**
 * 去除bom報頭
 */
public static String formatString(String s) {
if (s != null) {
      s = s.replaceAll("\ufeff", "");
}
return s;
}

不管有沒有把這個方法加到解析json方法的前面去,這樣可以讓程式更健壯