Charles maplocal 時中文顯示亂碼問題


用Charles對request進行Map Local后,app上看返回的中文是亂碼?

 

是Map Local的文件編碼有問題?是Charles設置有問題?是電腦環境有問題?哈哈,都不是

 

你是Android開發?你的項目里網絡框架用的是volley?是不是猜得很准?

 

對,萬萬沒想到問題出在volley上,簡單說就是 volley獲取從網絡來的信息流時會對其進行解碼,而解碼方式是根據返回數據的header中的content-type來進行的,如果content-type為空,則默認解碼方式是iso-8859-1,一個只支持英文和數字的字符集,不支持中文;同時又因為我們正常走接口時返回的數據是帶header的,而且會指定content-type是utf-8,所以這時候volley解碼不會有問題,但是map local的時候因為數據不帶header,所以volley使用了默認的解碼方式,導致出現了亂碼

 

解決方式是利用 charles的rewrite功能,替換response內容,把返回結果的content-type替換成utf-8

具體步驟是:

1.Tools中啟用Rewrite功能
2.在打開窗口中點擊左側中的Add按鈕,添加一條Rewrite規則
3.點擊右上的Locations中的Add,可以全部留空匹配所有請求。也可以根據需要過濾指定的接口,點擊OK
4.點擊右下的Rules中的Add按鈕,頂部下拉框選擇添加一條type為Modify Header的規則,勾選Response,在Match的Header中添加匹配Content-Type = text/plain的項,並在replace中添加Content-Type = application/json;charset=UTF-8的項,點擊OK

第四步配置如圖:

參考資料:http://www.paincker.com/charles-charset-incorrect 感謝這位博主


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM