2009-12-14 42 views
1

我使用apache HttpClient。而當我試圖「閱讀網站」時,所有非英文內容都表示錯誤。如何閱讀java中的非英文文本?他們代表編碼錯誤

實際上,它在windows-1252中表示,但它應該在UTF-8中。我怎樣才能解決這個問題?

我試過使用InputStreamReader (inputStream, Charset.forName ("UTF-8")),但它沒有幫助(錯誤的符號轉換爲????????)。

回答

0

尋找正確的字符編碼可能有點噩夢。根據網站內容的不同,以下內容可能會有所幫助。我過去做的一件事是依靠一個類,它將使用多種方法來確定正確的字符編碼:

來自rome項目的XmlReader將使用UTF字節順序標記和/或XML聲明來確定正確的編碼。

所以,你可以使用下面的結構:

new BufferedReader(new XmlReader(inputStream)) 

去的內容。

2

如果文件在Windows-1252中,那麼告訴它使用UTF-8將不起作用。以Windows-1252作爲字符集名稱,然後您可以讀取正確的數據。知道什麼格式的數據應該是不是幾乎一樣有用,因爲知道它是什麼格式實際上在:)

這取決於你是否然後重寫它在UTF-8 ...

0

如果頁面在「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");