bom報頭錯誤

android解析json出錯:JSONException: Value of type java.lang.String cannot be converted to JSONObject。

很簡單的一個json字符串: {"statu":"1","results":"true"},明顯看著是沒什么格式錯誤的,然后用各種json格式校驗工具檢測也都沒什么問題,但程序里就一直報錯。

google之后發(fā)現(xiàn)是BOM報頭問題。服務(wù)器端是php,返回的接送數(shù)據(jù)'{'前有bom報頭,java讀的時候把報頭直接當(dāng)作文件內(nèi)容讀,然后就會出錯。
一般是服務(wù)器端代碼格式的問題

BOM報頭又叫UTF-8簽名,其實UTF-8 的BOM對UFT-8沒有作用,是為了支援UTF-16,UTF-32才加上的BOM,BOM簽名的意思就是告訴編輯器當(dāng)前文件采用何種編碼,方便編輯器識別,但是BOM雖然在編輯器中不顯示,但是會產(chǎn)生輸出,就像多了一個空行,一般的php代碼如果用記事本等軟件編輯保存過之后,在保存一個以UTF-8編碼的文件時,會在文件開始的地方插入三個不可見的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隱藏的字符,用于讓記事本等編輯器識別這個文件是否以UTF-8編碼。(還不清楚為什么會在返回數(shù)據(jù)時候也自動加上了BOM報頭)。

java、android客戶端等可以通過代碼過濾掉bom,然后再解析。
/** * 去除bom報頭 */public static String formatString(String s) { if (s != null) { s = s.replaceAll("\ufeff", ""); } return s;}
這個bom問題真是困擾了很久。。。

服務(wù)器端過濾掉bom可以參考這篇文章:
PHP去除BOM頭

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,323評論 25 708
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,835評論 18 399
  • 只有在莊生的夢里 你把自己藏進了一個新的世界 一個腳印又一個的 都開出了花 在潮起潮落的暗夜里 你是怎么習(xí)慣的 因...
    風(fēng)趣先生閱讀 959評論 0 3
  • 能他說往事重提是折磨,可是回憶猶如困獸寂寞太久而漸漸溫柔。 當(dāng)一個女人不再愛你的時候,那是因為你已經(jīng)不在她心里了。...
    李蘑菇i閱讀 316評論 0 0

友情鏈接更多精彩內(nèi)容