手動 getBytes("GB2312") 再 new String(..., "UTF-8"),極易因編碼檢測失敗導致亂碼。
CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet(url);
CloseableHttpResponse resp = client.execute(get);
HttpEntity entity = resp.getEntity();
if (entity != null) {
// 1. 從 Content-Type 獲取 charset,無則用 EntityUtils 猜測
String charset = ContentType.getOrDefault(entity).getCharset() != null
? ContentType.getOrDefault(entity).getCharset().name()
: "UTF-8"; // 默認
// 2. 一次性獲取字符串 (自動按 charset 解碼)
String html = EntityUtils.toString(entity, charset);
System.out.println(html);
}
resp.close();
client.close();
EntityUtils.toString(entity, charset) 統一處理編碼。Content-Type: text/html; charset=gb2312;無則嘗試 HTML meta charset 或通用檢測器 (如 juniversalchardet)。CloseableHttpClient 管理連接釋放。