前言
正常情况下,Server端提供给Client端的所有接口的Response中应该有字符集的Header设置:
Content-Type: application/json;charset=UTF-8
如果没有,可能造成某些平台的Client中文解析乱码。
很不幸,我们团队的Server端开发人员的意识不够,很多JSON接口都不规范,用Charles抓包中文乱码。
以下为解决Charles中文乱码的方案:
方案1:修改Charles的配置文件Info.plist
右键Charles->在Finder中显示->右键Charles.app->显示包内容->Contents->双击打开Info.plist

修改JVMOptions: -Dfile.encoding=UTF-8
网上很多人都是用这种方式,但是我试了下,没有成功,我的Charles版本是v3.11.1
方案2:在Charles中Rewrite Header
打开Charles->Tool->Rewrite->勾选Enable Rewrite->点击Sets面板Add按钮->右侧Locations面板点击Add按钮输入url匹配规则(你server端的url规则)->右侧Rules面板点击Add按钮输入,详情如下图:

Charles Rewrite规则配置
注意:这里需要根据你Server端返回数据的具体情况来,因为我的Server端并没有返回Content-Type这个Header,并且所有接口都返回了Server: Apache-Coyote/1.1这个Header,所以我这个Rewrite规则实际上是修改Server: Apache-Coyote/1.1为Content-Type: application/json;charset=UTF-8