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

如何在Java中通过REST API获取UTF-8编码的Confluence页面?

解决方案

核心问题原因

  • 代码中InputStreamReader初始化时没有显式指定UTF-8编码,默认会使用JVM运行环境的默认字符集(Windows环境通常为GBK,部分服务环境为ASCII),导致UTF-8编码的响应字节被错误解码
  • GET请求不需要设置Content-Type请求头(该头仅用于标识请求体的格式,GET无请求体),不过该设置不影响编码结果

修复方案

直接修改InputStreamReader初始化逻辑,显式指定UTF-8编码即可,修改后代码如下:

URL url = new URL(https_url);

InetSocketAddress inet = new InetSocketAddress(proxy, port);
Proxy proxy = new Proxy(Proxy.Type.HTTP, inet);

HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(proxy);
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json;charset=UTF-8");
// 不需要的Content-Type头可以删除,也可以保留不影响
// conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
conn.setRequestProperty("Authorization", auth);

// JSON
StringBuilder finalJson = new StringBuilder();
// 关键修改:显式指定UTF-8编码读取响应流
InputStreamReader input = new InputStreamReader(conn.getInputStream(), java.nio.charset.StandardCharsets.UTF_8);
BufferedReader buffered = new BufferedReader(input);

String json;
while ((json = buffered.readLine()) != null) {
    finalJson.append(json);
}

补充验证

如果修改后仍有编码问题,可以先打印响应头conn.getHeaderField("Content-Type")确认Confluence返回的编码格式,确认是UTF-8后再调整读取逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 04:12:12