用Charles對request進行Map Local後,app上看返回的中文是亂碼?json
是Map Local的文件編碼有問題?是Charles設置有問題?是電腦環境有問題?哈哈,都不是網絡
你是Android開發?你的項目裏網絡框架用的是volley?是否是猜得很準?app
對,萬萬沒想到問題出在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編碼
具體步驟是:spa
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的項,點擊OKxml
第四步配置如圖:blog
參考資料:http://www.paincker.com/charles-charset-incorrect 感謝這位博主接口