【问题标题】:Using google script service to translate text return encoded text使用谷歌脚本服务翻译文本返回编码文本
【发布时间】:2020-08-27 13:49:44
【问题描述】:

我正在尝试实现来自this post 的代码。对于某些语言,我设法成功地做到了,但是对于希腊语,我得到了一些奇怪的结果,例如:ΑÏ?χάÏ?ιοÏ,

这是我使用的java代码:

public static String translate(String langFrom, String langTo, String text) {

    StringBuilder response = null;
    System.out.println("Translate: " + text);
    try {
        String urlStr = Main.GOOGLE_SCRIPTS_URL +
                "?q=" + URLEncoder.encode(text, "UTF-8") +
                "&target=" + langTo +
                "&source=" + langFrom;
        //System.out.println(urlStr);
        URL url = new URL(urlStr);
        response = new StringBuilder();
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestProperty("User-Agent", "Mozilla/5.0"); 
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }

    return response.toString();
}

这是我在 script.google.com 网站中使用的脚本:

var mock = {
  parameter:{
    q:'hello',
    source:'en',
    target:'fr'
  }
};


function doGet(e) {
  e = e || mock;

  var sourceText = ''
  if (e.parameter.q){
    sourceText = e.parameter.q;
  }

  var sourceLang = '';
  if (e.parameter.source){
    sourceLang = e.parameter.source;
  }

  var targetLang = 'en';
  if (e.parameter.target){
    targetLang = e.parameter.target;
  }

  var translatedText = LanguageApp.translate(sourceText, sourceLang, targetLang, {contentType: 'html'});

  return ContentService.createTextOutput(translatedText).setMimeType(ContentService.MimeType.JSON);
}

任何想法如何解决这个问题?谢谢。

【问题讨论】:

    标签: java google-apps-script


    【解决方案1】:

    我设法通过使用以下代码解决了这个问题:

    public static String translate(String langFrom, String langTo, String text) 
    { 
        String translatedText=null;
        try { 
             String urlStr = Main.GOOGLE_SCRIPTS_URL +
                    "?q=" + URLEncoder.encode(text, "UTF-8") +
                    "&target=" + langTo +
                     "&source=" + langFrom;
             //System.out.println(urlStr);
             URL url = new URL(urlStr);
             URLConnection conn = url.openConnection();
    
             BufferedReader br = new BufferedReader(
                                new InputStreamReader(conn.getInputStream(),"UTF-8"));
    
             String inputLine;
             while ((inputLine = br.readLine()) != null) {
                 translatedText=inputLine; 
             }
             br.close();
    
           } catch (MalformedURLException e) {
             e.printStackTrace();
           } catch (IOException e) {
             e.printStackTrace();
           }
    
          return translatedText; 
    }
    

    起初在 Eclipse 控制台上,我得到了这样的结果“???? ?? ??”但后来我去了运行->运行配置->通用并将编码更改为UTF-8。 现在一切正常!

    【讨论】:

      猜你喜欢
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 2022-01-02
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多