2016-09-10 3 views
0

discord.js 라이브러리를 사용하여 불화 봇을 쓰고 있습니다. googleapis에서 응답을받을 때까지 모든 것이 잘 작동합니다.Discord.js 불화 봇 번역

내가 번역하려고하는 것은 "hallo Magst du grüne Bäume"이며 응답으로 "hello do you do you grüne trees"입니다. 그리고이 문제는 대부분의 언어에서 발생합니다.

내 코드 :

'use strict'; 
const request = require('request'); 
const iso = require('iso-639-1'); 
// const iconv = require('iconv-lite'); 
const querystring = require("querystring"); 
// var baseRequest = request.defaults({ 
// encoding: null 
// }) 

module.exports = { 
    main: function(bot, msg, settings) { 
     let args = msg.content.replace(/"/g, ''); 
     let toLang = args.split(' ')[args.split(' ').length - 1]; 
     toLang = iso.getCode(toLang) == '' ? toLang : iso.getCode(toLang); 
     args = args.replace((" " + args.split(' ')[args.split(' ').length - 1]), '') 
     args = querystring.escape(args); 
     let fromlang = 'auto'; 
     let gurl = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=" + fromlang + "&tl=" + toLang + "&dt=t&q=" + args; 
     request(gurl, function(error, response, body) { 
      try { 
       // body = iconv.decode(body, 'utf8'); 
       // console.log(bodyWithCorrectEncoding) 
       let translated = body.match(/^\[\[\[".+?",/)[0]; 
       translated = translated.substring(4, translated.length - 2); 
       msg.channel.sendMessage("```\nTranslated:\n" + translated + "\n```"); 
      } catch (err) { 
       msg.channel.sendMessage("`Input was invalid`"); 
      } 
     }); 
    } 
}; 

당신은 내가 이진 파일을 반환 노력하고 있지만 성공하지를 iconv와 한을 볼 수 있습니다. 내 문제는 인코딩 어딘가에 거짓말을 알고 있지만 그것을 해결할 수 없습니다.

답변

1

API의 응답이 바람직한 인코딩이 아닙니다. 제 의견으로는 UTF-8을 사용하는 것이 더 낫습니다.이 목적으로 UTF8 모듈을 사용할 수 있습니다. 사실 나는 UTF8로 인코딩하려고했습니다. 안녕하세요, grüne 트리합니까? 그리고 그것은 효과가있었습니다.

+0

URL 매개 변수로 & ie = UTF-8이 추가되어 문제가 해결되었습니다. 하지만 내일 utf8 모듈을 사용해 보겠습니다. 감사합니다. – sniegoman