用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进制内容。结果发现有的汉字编码并不对,比如:
啊" => e5 22 60, × //correct code is E5 95 8A
"你好" => E4 BD A0 E5 A5 BD, √
"
不知道该如何解决啊?看了官方web微信的js文件,并未对字段进行转码处理,难道是angular里自带转码么?