使用標準 Java HTTP 客戶端,我在以下地址加載頁面:

如何正確解碼http回應?
uj5u.com熱心網友回復:
有多個專案可以(也不必)定義回應格式:
- 當客戶端發送請求時,會有一個名為
Accept-Encoding. 這應該是客戶端想要擁有的服務器的提示。 - 當服務器發送回應時,服務器應該標記 header 中使用的編碼
Content-Encoding。 - 正如您提到的,回應正文可能包含元標記。這里的缺點是客戶端已經需要假設一些編碼來訪問這些資料,所以它不太可靠。
Windows-1251盡管如此,無論真正使用的編碼是什么,您似乎都應用了 BodyHandler 。
這樣你的設定看起來很脆弱,你最好檢查一下標頭 Accept-Encoding 和 Content-Encoding 是否存在并且有意義。
編輯:從問題中測驗代碼時,我能夠重現報告的問題。但是當我像這樣簡單地利用客戶端的默認行為時,它們就消失了:
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://www.youtube.com/watch?v=ELArlE7gSmw"))
.GET()
.build();
HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
uj5u.com熱心網友回復:
解決了這個問題。
對于 Intellij IDEA:檔案 > 設定 > 編輯器 > 檔案編碼。
將欄位“全域編碼”和“專案編碼”設定為“系統默認值”(不是 UTF-8 或 Windows-1251,而是默認值!)。整個輸出是固定的

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510736.html
標籤:爪哇http字符集
