jsonUnexpected token,字串編碼不一致等的終極解決辦法

明亮的技術部落格發表於2017-03-20

最近一個正常執行了半年的系統,和第三方APP進行的通訊程式,一直執行的好好的,下午突然就崩了~~~通過日誌排查是解析過程中出錯了,但是我的程式各個資料庫互動環節以及資料強制轉換的環節都做了判斷,額,複製出來日誌上的各種接收資料,通過“肉眼”掃描了N多次,沒問題啊,甚至開始對自己編寫的“無敵”程式產生懷疑了,呵呵。

但是在網上的有些json校驗格式化工具上提示Unexpected token,雖然大部分工具還是能校驗通過。但是還是把資料複製到我的eclipse下進行執行,果然發現轉換json的環節出錯了!!!但是在IDE下肉眼檢查了每一個大括號,中括號,冒號,雙引號,都沒有發現問題!!!

後來部署到程式下面進行執行,發現不能正常轉換,遂和同事WJW進行了溝通,然後兩人又是半天進行排查,沒個結果,思來想去我們都知道可能是編碼的問題!但是誰也不知道如何下手,在出錯的json校驗網頁,把第一層的左括號刪除(直至第一個字串),用半形左括號進行了替換,發現可以正常解析了!!!

  再後來問題排查出來了,和APP方進行了溝通,你們是不是修改程式的字符集編碼了導致我方收到資料無法解析???對方經過排查,確實是他們有一個開發人員對程式碼進行過修改,然後他們聽從我們的意見對該檔案恢復為UTF-8編碼,果然程式又可以正常執行了。

後來大神WJW編寫了個字串轉byte的小程式完美的解釋了這一現象,以後大家不用走彎路了,直接這麼做就能告訴對方“你的字串編碼有問題”。

廢話不多說了,直接上圖!

先看看正常情況下的json字串的Byte陣列是啥樣的?可以從下圖中看見是123,34,101。。


然後我們再看看那個坑爹的字串是啥樣???通過下圖我們看見前邊明顯的多餘了3個奇怪的位元組。。。

們可以把這圖直接丟給對方的開發人員,他們會啞口無言!!!

這種方法適用於所有字串編碼不一致的場景。

相關文章