有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

google cloud translate和Java的错误编码

我正在尝试使用谷歌云翻译。我认为问题在于谷歌云翻译使用UTF8,jvm使用UTF16。所以我的翻译有一些错误。例如:

      public static void main(String... args) throws Exception {
    // Instantiates a client
    Translate translate = TranslateOptions.getDefaultInstance().getService();

    // The text to translate
    String text = "Bonjour, à qui dois-je répondre? Non, C'est l'inverse...";

    // Translates some text into Russian
    Translation translation =
        translate.translate(
            text,
            TranslateOption.sourceLanguage("fr"),
            TranslateOption.targetLanguage("en"));


    System.out.printf("Text: %s%n", text);
    System.out.printf("Translation: %s%n", StringEscapeUtils.unescapeHtml(translation.getTranslatedText()));
  }

将返回:

“喂,我该回答谁?不,正好相反……”

而不是:

你好,我该回答谁?不,正好相反

我们无法更改java字符串的编码,Google Cloud Api将不接受任何内容(字节[]?)但是绳子

有人知道怎么修吗

谢谢你的阅读

编辑:这段代码现在正在运行,我添加了StringEscapeUtils。从commons中删除HTML。apache依赖项。我不知道还有没有别的办法


共 (2) 个答案

  1. # 1 楼答案

    尽管您已经找到了问题的解决方案,但我确实为您的问题提供了另一个修复方案,它不需要使用额外的库

    translate方法默认返回一个html编码的字符串,如前所述。但是,如果在方法调用中提供了匹配的TranslateOption,则它可以返回纯文本字符串

    方法调用将如下所示

        Translation translation = translate.translate(
                text,
                Translate.TranslateOption.sourceLanguage(from),
                Translate.TranslateOption.targetLanguage(to),
                Translate.TranslateOption.format("text")
        );