java - 使用谷歌脚本服务翻译文本返回编码文本

标签 java google-apps-script

我正在尝试实现 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);
}

有什么想法可以解决这个问题吗?谢谢。

最佳答案

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

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。 现在一切都很好!

关于java - 使用谷歌脚本服务翻译文本返回编码文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61739564/

相关文章:

java - 已解决 Java Spark 中缺少属性 newvalue#10

Java 反射 : how to get field value from an object, 不知道它的类

java - 使用 getter 和 setter 获取 null

javascript - Style.Display = "None"在 Google Apps 脚本 HTML 服务中不起作用

google-apps-script - Google 应用电子表格父文件夹 ID

JavaFX TitledPane 双边框使用 css 文件

java - Java 中的循环中的循环

javascript - 使用 GDrive 脚本仅显示一次对话框(实现脏位系统)

google-apps-script - 如何将具有多行的 2 列单元格拆分为唯一的行,同时保留/复制周围的数据?

google-apps-script - Web 应用程序要求用户登录,即使它已部署为由 "Anyone, even anonymous"使用