我使用apache HttpClient。而當我試圖「閱讀網站」時,所有非英文內容都表示錯誤。如何閱讀java中的非英文文本?他們代表編碼錯誤
實際上,它在windows-1252中表示,但它應該在UTF-8中。我怎樣才能解決這個問題?
我試過使用InputStreamReader (inputStream, Charset.forName ("UTF-8"))
,但它沒有幫助(錯誤的符號轉換爲????????)。
我使用apache HttpClient。而當我試圖「閱讀網站」時,所有非英文內容都表示錯誤。如何閱讀java中的非英文文本?他們代表編碼錯誤
實際上,它在windows-1252中表示,但它應該在UTF-8中。我怎樣才能解決這個問題?
我試過使用InputStreamReader (inputStream, Charset.forName ("UTF-8"))
,但它沒有幫助(錯誤的符號轉換爲????????)。
尋找正確的字符編碼可能有點噩夢。根據網站內容的不同,以下內容可能會有所幫助。我過去做的一件事是依靠一個類,它將使用多種方法來確定正確的字符編碼:
來自rome項目的XmlReader將使用UTF字節順序標記和/或XML聲明來確定正確的編碼。
所以,你可以使用下面的結構:
new BufferedReader(new XmlReader(inputStream))
去的內容。
如果文件在Windows-1252中,那麼告訴它使用UTF-8將不起作用。以Windows-1252作爲字符集名稱,然後您可以讀取正確的數據。知道什麼格式的數據應該是不是幾乎一樣有用,因爲知道它是什麼格式實際上在:)
這取決於你是否然後重寫它在UTF-8 ...
如果頁面在「Content-Type」標題中進行了編碼,HttpClient將會對其進行遵守。如果不是,它將假設拉丁-1,而不是Windows-1252。你確定你正在使用Windows-1252嗎?您可以檢查編碼這樣,
String encoding = method.getResponseCharSet();
如果您知道響應確實使用UTF-8,但頭部沒有指定它,您可以強制它讀取UTF-8這樣,
byte[] body = method.getResponseBody();
String response = new String(body, "UTF-8");