【问题标题】:Bing Translator API returns incorrect Greek words必应翻译 API 返回不正确的希腊语单词
【发布时间】:2017-11-19 19:48:59
【问题描述】:

我正在使用 axios 向 Microsoft Text Translator API 发出 GET 请求。调用成功,它正确地返回了从希腊语到英语的翻译。但是,当我尝试进行英语到希腊语的翻译时,答案是错误的。例如,“προγραμματισμός”这个词的翻译是ÀÁ¿³Á±¼¼±Ä¹Ã¼ÌÂ,而不是programming。有人遇到过希腊语或其他语言的这个问题吗?

index.js

bp.hear(/μετάφρασε (.+)/i, (event, next) => {
const microsoft_translator_text = event.captured[0];
const requst = 
    axios.post("https://api.cognitive.microsoft.com/sts/v1.0/issueToken", null, {
      headers: {'Ocp-Apim-Subscription-Key': bing_translator_api}
    })
    .then(function (response) {
      var microsoft_translator_auth = response.data;
      console.log(microsoft_translator_text);
      axios.get(`http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId=Bearer%20${microsoft_translator_auth}&from=el&to=en&text=${microsoft_translator_text}`)
      .then(function (translation) {
        var translation_morph = translation.data.replace(/['"]+/g, '')
        event.reply('#translation', {
         translation: translation_morph,
        }) 
       })
      .catch(function (error) {
        console.log(error);
      });
    })
    .catch(function (error) {
      console.log(error);
    });
})

【问题讨论】:

  • 看起来像是编码问题。你假设文本是 ascii 吗?
  • @Fai 不太确定。但我只是试图用引号返回一些东西,而我得到的实际返回是&quot

标签: javascript node.js microsoft-translator


【解决方案1】:

正如 Fai 所说,这是一个编码问题。通过在发送之前在 url 上使用 encodeURI 解决问题,如下所示:

var encoded_url = encodeURI("http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId=Bearer " + `${microsoft_translator_auth}&from=el&to=en&text=${microsoft_translator_text}`)
axios.get(encoded_url, null, {
  headers: {'Content-type': 'application/json'},
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多