2016-09-10 2 views
0

のためのボットを翻訳します。私はgoogleapisからの応答を得るまですべてうまく動作します。 「ハローMagstデュgrüneボーム」と応答して、私は「こんにちは、あなたが木をgrüneん」取得しています:私は、たとえば変換しようとしているものをDiscord.jsは、私がdiscord.jsライブラリを使用して不和のためのボットを書いて不和

です。そして、この問題はほとんどの言語で発生します。

マイコード:

'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