Node.js请求编码

3

我想使用谷歌翻译API,因此我制作了这个Node.js模块。

module.exports = function(sourceText,sourceLang,targetLang,callback) {
var qst = qs.stringify({
    client : 'gtx',
    sl : sourceLang,
    tl : targetLang,
    dt : 't',
    q : sourceText
});
var options = {
    uri: 'http://translate.googleapis.com/translate_a/single?'+qst,
};
request.get(options).on('response',function(response){
    response.on('data',function(data){
        console.log(data.toString('utf-8'));
    });
});..

我主要想使用翻译从日语到韩语,所以我进行了测试,但我没有得到我想要的结果。我检查了URI并在浏览器上执行,它有效!

例如:sorceLang=ja,targetLang=ko,sourceText=ののの, 我得到了URI

http://translate.googleapis.com/translate_a/single?client=gtx&sl=ja&tl=ko&dt=t&q=%E3%81%AE%E3%81%AE%E3%81%AE

在浏览器上的结果[[["의의","ののの",,,0]],,"ja"]

但是,node.js返回的结果是[[["縺ョ縺ョ縺ョ","縺ョ縺ョ縺ョ",,,0]],,"ja"]

我认为问题似乎出现在请求中,因为结果没有被翻译。

请给我一些解决方案。谢谢。


你尝试过使用 request.get(options, function(err, res, body) { console.log(body) }) 吗? - mscdex
是的,我尝试过了。但结果还是一样的。 こんにちわ body : [[["縺薙 s 縺ォ縺. SaaS는","縺薙s縺ォ縺。繧",,,0]],, @mscdex - yongsup
1个回答

2

我明白了!

浏览器的结果是正确的。 因此,我设置了头文件'User-Agent'。 这是我的源代码

module.exports = function(sourceText,sourceLang,targetLang,callback){
var qst = qs.stringify({
    client : 'gtx',
    sl : sourceLang,
    tl : targetLang,
    dt : 't',
    q : sourceText
});
var options = {
    uri: 'http://translate.googleapis.com/translate_a/single?'+qst,
    headers : { 
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36'
    }
};
request.get(options).on('response',function(response){
    response.on('data',function(data){
        console.log(data);
    });
});}

控制台结果

[[["안녕하세요","こんにちわ",,,0]],,"ja"]

谢谢你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接