Charles中文乱码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Charles中文乱码相关的知识,希望对你有一定的参考价值。
参考技术A正常情况下, Server 端提供给 Client 端的所有接口的 Response 中应该有字符集的 Header 设置:
如果没有,可能造成某些平台的 Client 中文解析乱码。
很不幸,我们团队的 Server 端开发人员的意识不够,很多 JSON 接口都不规范,用 Charles 抓包中文乱码。
以下为解决 Charles 中文乱码的方案:
右键Charles->在Finder中显示->右键 Charles.app ->显示包内容->Contents->双击打开Info.plist
网上很多人都是用这种方式,但是我试了下,没有成功,我的 Charles 版本是 v3.11.1
打开 Charles ->Tool->Rewrite->勾选 Enable Rewrite ->点击 Sets 面板 Add 按钮->右侧 Locations 面板点击 Add 按钮输入url匹配规则(你server端的url规则)->右侧 Rules 面板点击 Add 按钮输入,详情如下图:
注意 :这里需要根据你 Server 端返回数据的具体情况来,因为我的 Server 端并没有返回 Content-Type 这个Header,并且所有接口都返回了 Server: Apache-Coyote/1.1 这个Header,所以我这个 Rewrite 规则实际上是修改 Server: Apache-Coyote/1.1 为 Content-Type: application/json;charset=UTF-8
Charles Map Local 中文显示乱码问题
用Charles对请求Map Local后手机上看中文是乱码?
你是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
参考资料:http://www.paincker.com/charles-charset-incorrect
感谢博主
以上是关于Charles中文乱码的主要内容,如果未能解决你的问题,请参考以下文章