Rokid.request的options中带中文字符的问题


(oursyslink) #1

反应一个问题:
Rokid.request(options, (error, response, body) => {
第一个参数options有中文的话(如里奥B),传给我们服务器的是这样的:é\u0087\u008C奥B
,默认不是按UTF8处理的吗?如果不是,后续处理会很麻烦


(jun.lukesmail) #2

您好,不知道您是把请求参数放在url里还是body里,您可以试试配置一下contentType: "application/x-www-form-urlencoded; charset=utf-8"避免出现中文乱码的情况。


(oursyslink) #3

var options = { method: ‘POST’,
url: ‘http://www.xxx.com’,
contentType: “application/x-www-form-urlencoded; charset=utf-8”,
qs:
{ xxx:yyy
}
};

是在options里面这样写吗


(jun.lukesmail) #4

您好,如下:
const options = {
method: method,
headers:{‘content-type’: ‘application/json’}
};


(oursyslink) #5

我这样加了,收到还是乱码:
var contentType = {‘content-type’: ‘application/json;charset=utf-8’};
var options = { method: ‘POST’,
headers:JSON.stringify(contentType),
url: ‘http://www.xxx.com’,
qs: { xxx:yyy }
};


(jun.lukesmail) #6

var request = require(“request”);

var options = { method: ‘POST’,
url: ‘http://localhost:3001/runEngine’,
headers:
{ ‘cache-control’: ‘no-cache’,
‘content-type’: ‘application/x-www-form-urlencoded’ },
form: { param: ‘中文测试’ } };

request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

不需要JSON.stringify的转换,按照如上编辑即可。


(oursyslink) #7
   var options = { method: 'POST',
     url: 'http://cmp.cellbot.cn/cgi/script/rolesexecute.api',
     headers:{'cache-control': 'no-cache','content-type': 'application/x-www-form-urlencoded;charset=utf-8'},
     qs:
     {
     roles:'里奥',
   }
};

我这样写,收到的还是跟之前一样是乱码


(jun.lukesmail) #8

qs改为form。


(oursyslink) #9

可以了,十分感谢!


(jun.lukesmail) #10

太棒了,感谢您的支持。