V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
whahuzhihao
V2EX  ›  Node.js

Electron 下对 web 微信抓包 HTTP 请求结果有中文乱码,如何解决?

  •  
  •   whahuzhihao · 2016-04-04 22:31:50 +08:00 · 6391 次点击
    这是一个创建于 3147 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在逼乎和 stackoverflow 上都提问了,在这里继续寻找老司机。

    用 Electron 把 web 微信包了一层,然后根据官方文档,使用 chrome-devtools 的 network 对 HTTP 请求进行抓包。但是在一个 POST 的 response 中,返回的是一个 JSON 字符串,里面的中文字段值是乱码。

    根据 response 的 headers ,能看到服务端并未给出这次返回的 charset ,所以猜测 node 里是当做默认编码(Latin_1)解码的,所以造成了乱码。但理论上字符的二进制序列应该是对的,所以我用 Buffer 转了一次码

    let content = new Buffer(e.Content, "binary").toString();
    

    结果在有些情况下确实可以使用,但是有些字符不能准确转码。我直接打印了 Buffer 的内容,看字符的 16 进制内容。结果发现有的汉字编码并不对,比如:

    "你好" => E4 BD A0 E5 A5 BD, √
    "啊" => e5 22 60, ×    //correct code is E5 95 8A
    

    不知道该如何解决啊?看了官方 web 微信的 js 文件,并未对字段进行转码处理,难道是 angular 里自带转码么?

    其实不只是node里打印出来是乱码,直接在chrome里用开发者工具看,就是乱码,但显示在网页上就是好的。

    2 条回复    2017-11-20 10:42:45 +08:00
    ggicci
        1
    ggicci  
       2017-11-20 01:16:25 +08:00
    这是 chrome devtools 的 BUG,请问 up 主后面怎么解决的?
    whahuzhihao
        2
    whahuzhihao  
    OP
       2017-11-20 10:42:45 +08:00
    @ggicci 后面直接放弃了啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2755 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 190ms · UTC 05:36 · PVG 13:36 · LAX 21:36 · JFK 00:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.