我正在使用discord.js库编写一个针对不和谐的机器人。一切正常,直到我收到googleapis的回复。
例如,我要翻译的是:“ hallo Magst dugrüneBäume”,作为回应,我得到“你好,你有没有树木”。对于大多数语言,都会出现此问题。
我的代码:
'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,但是没有成功。我知道我的问题出在编码方面,但是我无法解决。
最佳答案
来自API的响应未采用理想的编码。在我看来,最好坚持使用UTF-8,为此,您可以使用UTF8模块。实际上,我尝试使用UTF8进行编码-您好,您是否在树上打了个树,它确实起作用了。