我試圖通過互聯網逐行讀取text/plain
文件。我現在所擁有的代碼是:將InputStream讀取爲UTF-8
URL url = new URL("http://kuehldesign.net/test.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
LinkedList<String> lines = new LinkedList();
String readLine;
while ((readLine = in.readLine()) != null) {
lines.add(readLine);
}
for (String line : lines) {
out.println("> " + line);
}
文件,test.txt
,包含¡Hélló!
,我使用,以測試其編碼。
當我查看OutputStream
(out
)時,我將其視爲> ¬°H√©ll√≥!
。我不認爲這是OutputStream
的問題,因爲我可以做out.println("é");
沒有問題。
讀取形式爲InputStream
爲UTF-8的任何想法?謝謝!
HTTP協議指定編碼。你爲什麼不使用庫API來處理它?你不應該像這樣猜測編碼。我不是故意否定的:你做得很好!我只是想知道是否沒有更簡單的方法。 – tchrist 2011-02-11 01:25:51
不幸的是,我將無法訪問服務於「text/plain」文件的服務器,並且它不使用UTF-8編碼。我沒有意識到任何好的網絡庫;有什麼建議麼? – 2011-02-11 01:39:19
看着[文檔](http://download.oracle.com/javase/6/docs/api/java/net/URL.html),我不認爲你將不得不指定編碼。我很驚訝他們給你一個字節流!您可以訪問底層的[URLConnection](http://download.oracle.com/javase/6/docs/api/java/net/URLConnection.html),您可以從中檢查Content-Encoding,然後打開帶有正確參數的InputStreamReader。對源代碼的快速檢查並沒有發現任何似乎對你有用的事情,這看起來很蹩腳且容易出錯,所以我可能錯過了一些東西。 – tchrist 2011-02-11 01:48:29