V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
whahugao
V2EX  ›  Node.js

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

  •  
  •   whahugao · Apr 4, 2016 · 7133 views
    This topic created in 3676 days ago, the information mentioned may be changed or developed.

    在逼乎和 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 replies    2017-11-20 10:42:45 +08:00
    ggicci
        1
    ggicci  
       Nov 20, 2017
    这是 chrome devtools 的 BUG,请问 up 主后面怎么解决的?
    whahugao
        2
    whahugao  
    OP
       Nov 20, 2017
    @ggicci 后面直接放弃了啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   985 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 20:06 · PVG 04:06 · LAX 13:06 · JFK 16:06
    ♥ Do have faith in what you're doing.