跟蹤Android客戶端中文(偶然性)亂碼

軟件運行環境:html

    服務端: ubuntu 14.04.2 serverjson

     客戶端: Android padubuntu

數據跟蹤工具: 無線網卡 + Wireshark + notepad ++
瀏覽器

———————————————————————————————————————服務器

    當客戶端和服務器進行數據交互的過程當中,測試過程當中發現數據異常,可是在彼此程序猿的經過打印輸出數據方式跟蹤數據的異常,並且在彼此都確定數據沒問題的時候,是很是蛋疼的,究竟是誰的錯?那麼咱們就從數據的傳輸介質中接受端或者發送端入口處截取數據分析。網絡

        在此,我採用的是經過截取網絡數據到Android設備的入口處截取。因爲在移動設備上採用抓包再分析是一個很麻煩的過程,還須要root設備,如若採用模擬器 + tcpdump操做,過程繁瑣。本人在此分享一種經過在主機上(臺式機)插入一個無線網卡,讓其成爲一個熱點而且用移動設備鏈接這個熱點,在PC端用Wireshark抓取臺式機無線網卡的數據,就能夠很easy的分析數據了。具體分爲如下幾步(針對客戶端數據顯示偶然性中文亂碼tcp

  1. 插入無線網卡,下載360免費wifi(真心比wifi精靈好使,wifi精靈特麼程序老死),配置好無線熱點,用移動設備鏈接熱點編輯器

  2. 如上圖,設備已經鏈接好熱點,下面就是打開PC端的Wireshark工具工具


    如圖所示選擇無線鏈接,點擊Start開始抓取無線網卡上的數據包。測試

  3. 設置過濾條件(例以下圖中過濾來自服務器169.254.1.12的數據),在移動設備上操做軟件,用Wireshark將數據打印到txt文本,因爲是中文字符,因此要要分析字符的內碼,因此在txt數據包中找到關鍵數據,並將中文字符的16進制碼拷入notepad++ 中用Hex-Editor編輯,最後把編輯後的數據保存爲html,用瀏覽器打卡,查看中文顯示是否正確(以下圖)



    如上圖所示,截取的數據真實字符爲【 某某會議室 ISC TV 】,將截取的16進制放入notepad++ 的Hex-Editor編輯器中編輯,並保存爲html文件,最後用瀏覽器打開,選擇不一樣編碼格式

    notepad++ Hex-Editor 編輯以下圖所示


用瀏覽器打開

將正確中文數據和亂碼中文數據分別用Wireshark截取兩份,比較。 因爲從事的是服務端開發,因此經過此種方法順利的把責任推給 移動客戶端的程序猿。不過目前沒有找到亂碼的緣由,因爲數據是分兩個網絡數據包發送過去的,目前猜想可能客戶端在接受數據包,拼接的時候出現問題,或者json庫使用的過程當中轉utf-8編碼出現問題。

相關文章
相關標籤/搜索