nodejs使用请求模块设置body的编码

时间:2016-11-22 10:39:49

标签: node.js encoding character-encoding request

我必须向包含俄语字符的正文发送一个帖子请求到似乎只接受win1251编码的服务。我正在使用请求模块在node.js中执行此操作。

这就是我发送请求的方式

var rawbody = "i1=&i2=&i3=" + query + "&i4=&i5=&i8="; 

var options = {
    url: this.initiate_endpoint,
    jar: this.session,
    cert: this.fs.readFileSync('resources/r.crt.pem', 'utf-8'),
    key: this.fs.readFileSync('resources/r.key.pem', 'utf-8'),
    timeout: 20000,
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: rawbody
};
let cookie = this.session;

request.post(options,
    function (error, response, body) {
        if( error ) {
            callback(cookie, error);
        }
        else if( response.statusCode !== 200 ) {
            callback(cookie, 'Responded with status code: ' + response.statusCode);
        }
        else {
            callback(cookie, false);
        }
 });

每当query变量包含俄语字母时,请求都将失败。

例如:

var query = 'Путин';

所以我的问题是如何将编码从查询变量实际转换为win1251,以及如何设置实际原始帖子的编码,因为我认为这两件事可能是导致问题的原因。

0 个答案:

没有答案