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

Java调用谷歌翻译API丢失带变音符号字符问题排查

问题原因分析

你遇到的变音字符丢失问题,本质是谷歌网页端翻译接口的反滥用/客户端检测机制导致的。该接口专为浏览器访问设计,会根据请求中的客户端特征(如请求头)返回不同内容:

  • 浏览器发送请求时,会附带完整的User-Agent、Accept、Accept-Language等头信息,被识别为合法客户端,返回包含变音字符的完整翻译结果。
  • 你的Java代码仅设置了Content-Type头,缺少这些关键标识,被判定为非浏览器请求,谷歌会返回简化后的文本(自动移除变音字符)作为限制措施。
解决方案

在请求中添加模拟浏览器的请求头,让谷歌接口识别你的请求为合法浏览器访问即可。修改后的Java代码如下:

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.Builder;
import java.net.http.HttpResponse;
import java.time.Duration;
import java.net.http.HttpClient;
import java.net.http.HttpResponse.BodyHandlers;

public class TestTranslate {
    public static void main(String[] args) {
        try{
            HttpClient client = HttpClient.newBuilder().connectTimeout(Duration.ofMinutes(1)).build();
            String translatePayload = "async=translate,sl:en,tl:ro,st:delete,id:" + System.currentTimeMillis() + ",qc:true,ac:true,_id:tw-async-translate,_pms:s,_fmt:pc";
        
            Builder requestBuilder = HttpRequest.newBuilder().uri(URI.create("https://www.google.com/async/translate"))
                .timeout(Duration.ofMinutes(1))
                // 添加模拟浏览器的请求头
                .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
                .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
                .header("Accept-Language", "en-US,en;q=0.5")
                .header("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
        
            HttpRequest request = requestBuilder.POST(HttpRequest.BodyPublishers.ofString(translatePayload)).build();

            HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
            System.out.println("=======================1");
            System.out.println(response.body());
        } catch(Exception e) {
            System.out.println("=======================2");
            e.printStackTrace(System.out);
        }
    }
}
额外提示

谷歌网页端的/async/translate并非官方公开API,其接口规则和限制随时可能变更,长期使用建议改用谷歌官方的Cloud Translation API,避免因接口调整导致功能失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 12:57:17