關於JSON解析的深坑之BOM頭

    前言:在我們對Json字符串進行處理時,往往會碰到這個問題org.json.JSONException: Value of type java.lang.String cannot be converted to JSONObject,解析服務器返回的Json串時,JSONObject對象拋出了這個異常。其實這是返回的Json字符串含有BOM頭導致的。


本人手拙,寫的不好。望各位大蝦見諒!!!


什麼是JSON? 

   JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於ECMAScript的一個子集。 JSON採用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C、C++、C#、Java、JavaScript、Perl、 Python等)。這些特性使JSON成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成(一般用於提升網絡傳輸速率)。

什麼是bom頭?

    在utf-8編碼文件中BOM在文件頭部,佔用三個字節,用來標示該文件屬於utf-8編碼,現在已經有很多軟件識別bom頭,但是還有些不能識別bom頭,比如PHP就不能識別bom頭,這也是用記事本編輯utf-8編碼後執行就會出錯的原因了。

去掉bom頭的辦法:

     1、editplus去BOM頭的方法
        編輯器調整爲UTF8編碼格式後,保存的文件前面會多出一串隱藏的字符(也即是BOM),用於編輯器識別這個文件是否是以UTF8編碼。
        運行Editplus,點擊工具,選擇首選項,選中文件,UTF-8標識選擇 總是刪除簽名,
        然後對PHP文件編輯和保存後的PHP文件就是不帶BOM的了。

    2、ultraedit去除bom頭辦法
        打開文件後,另存爲選項的編碼格式裏選擇(utf-8 無bom頭),確定就ok了


使用JSON也差不多一年了,前前後後也遇到過幾次莫名其妙的解析出錯!原因就是因爲在utf-8中生成的JSON文件帶有BOM頭

例如下面這張圖片的這段JSON

bom_json.png

    本人菜鳥一枚,望各位大蝦輕噴~謝謝各位!!!

原文鏈接:http://www.echohoo.com/?post=515

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章