我正在爲英文網站編寫一個小型爬網程序,並通過打開URL
連接來完成此操作。我在請求和InputStreamReader
上都設置了utf-8
的編碼,但我仍然對某些請求感到厭煩,而其他人則正常工作。Java URLConnection utf-8編碼不起作用
以下代碼代表我所做的所有研究和建議。我也試過改變URLConnection
到HttpURLConnection
沒有運氣。一些返回的字符串繼續如下所示:
??}?r?H?P?n?c ??]?d?G?o ?? Xj {?x?「P $ a?Qt?#& ?? e?a#????? lfVx)?='b?「Y(defUeefee = ??????。a8 ?? {O ?????? zY? ?2M的??? ?? 3C @
我缺少什麼
我的代碼:?
public static String getDocumentFromUrl(String urlString) throws Exception {
String wholeDocument = null;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
conn.setRequestProperty("Content-Type", "text/plain; charset=utf-8");
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setConnectTimeout(60*1000); // wait only 60 seconds for a response
conn.setReadTimeout(60*1000);
InputStreamReader isr = new InputStreamReader(conn.getInputStream(), "utf-8");
BufferedReader in = new BufferedReader(isr);
String inputLine;
while ((inputLine = in.readLine()) != null) {
wholeDocument += inputLine;
}
isr.close();
in.close();
return wholeDocument;
}
您是否有示例URL失敗?你看過網絡上會發生什麼(例如使用Wireshark)嗎? –
這看起來不像文本。它(可能)是PDF文件嗎?還是壓縮?我懷疑這是UTF-8的一個「簡單」問題。 –
這是一個失敗的URL。再次,它只是有時失敗。在其他人工作正常。 http://www.broadbandtvnews.com/2014/02/04/samsung-adds-the-weather-channel/ – Eddy