You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DeepL Java库翻译HTML时含JPG图片报错求助

问题描述

使用DeepL Java库翻译含HTML的文本时出现异常:

  • HTML里带.gif图片链接时翻译正常
  • 带.jpg图片链接时触发JsonSyntaxException报错

报错代码片段:

boolean failed = false;
String translationResult = "";
try
{
    TextResult result = translator.translateText( text, source, target, translationOptions );
    translationResult = result.getText( );
}
catch (IllegalStateException | JsonSyntaxException exception)
{
  failed = true;
  exception.printStackTrace( );
  Show.error( "failded"+ exception.getMessage( ) +"\n"+ exception.getCause( ) );
}

if(failed) {
    Show.error( "failded" );
}

完整报错栈:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
13/10/2022 10:22:45,483 [AWT-EventQueue-0] ERROR [JBroker] User Message: faildedjava.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:225)
    at com.google.gson.Gson.fromJson(Gson.java:991)
    at com.google.gson.Gson.fromJson(Gson.java:956)
    at com.google.gson.Gson.fromJson(Gson.java:905)
    at com.google.gson.Gson.fromJson(Gson.java:876)
    at com.deepl.api.parsing.Parser.parseErrorMessage(Parser.java:47)
    at com.deepl.api.Translator.checkResponse(Translator.java:769)
    at com.deepl.api.Translator.translateText(Translator.java:174)
    at com.deepl.api.Translator.translateText(Translator.java:110)
    at com.upsilon.screens.translator.DeeplTranslator.translate(DeeplTranslator.java:75)

分析与解决方案

从报错栈能看出,问题出在DeepL库的Parser.parseErrorMessage方法:Gson尝试解析API响应时,得到的不是预期的JSON对象,而是纯字符串。这说明带.jpg的HTML触发了API返回非标准响应,导致解析失败。

1. 检查HTML中JPG链接的格式

确保.jpg链接是标准URL格式,没有未闭合标签、特殊字符转义错误等问题。比如:

  • 错误写法:<img src="test.jpg(缺失闭合引号)
  • 正确写法:<img src="https://example.com/test.jpg" alt="示例图">

2. 升级DeepL Java库到最新版

旧版本库可能存在HTML元素解析的兼容性bug,尤其是处理图片链接的逻辑。替换成官方最新版本后再测试。

3. 预处理HTML中的JPG链接

翻译前先把.jpg替换成临时标记,翻译完成后再恢复,绕过API对.jpg的特殊处理:

// 预处理替换
String processedText = text.replace(".jpg", ".temp_jpg_tag");
// 执行翻译
TextResult result = translator.translateText(processedText, source, target, translationOptions);
// 恢复原链接
translationResult = result.getText().replace(".temp_jpg_tag", ".jpg");

4. 优化异常处理,添加重试逻辑

针对此异常增加重试机制,避免单次响应异常导致翻译失败:

catch (IllegalStateException | JsonSyntaxException exception)
{
  failed = true;
  // 重试一次
  try {
      TextResult retryResult = translator.translateText(text, source, target, translationOptions);
      translationResult = retryResult.getText();
      failed = false;
  } catch (Exception retryEx) {
      retryEx.printStackTrace();
      Show.error("翻译失败:" + retryEx.getMessage());
  }
}

5. 检查TranslationOptions配置

确认tagHandling参数是否正确设置为html,确保库正确识别并处理HTML标签:

TranslationOptions options = new TranslationOptions();
options.setTagHandling("html");

内容的提问来源于stack exchange,提问作者lsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:10:55