我已經寫了這個小測試類來連接到FTP服務器。FTP服務器輸出和口音
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class FTPTest {
public static void main(String[] args) {
URL url = null;
try {
url = new URL("ftp://anonymous:[email protected]");
} catch (MalformedURLException e) {
e.printStackTrace();
}
URLConnection conn = null;
try {
conn = url.openConnection();
} catch (IOException e) {
e.printStackTrace();
}
InputStream in = null;
try {
in = conn.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
BufferedInputStream bin = new BufferedInputStream(in);
int b;
try {
while ((b = bin.read()) != -1) {
char c = (char) b;
System.out.print("" + (char) b);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
下面是輸出:
-rw-r--r-- 1 ftp ftp 4700 Apr 30 2007 premier.java
-rw-r--r-- 1 ftp ftp 88576 Oct 23 2007 Serie1_1.doc
-rw-r--r-- 1 ftp ftp 1401 Nov 21 2006 tp20061121.txt
drwxr-xr-x 1 ftp ftp 0 Apr 23 20:04 répertoire
注意在列表的末尾目錄的名稱。應該有一個「é」(e用尖銳的重音)而不是雙重字符「Ã」。
這讓我想起以前JSF遇到的一個問題,標準之間有混淆。我對字符編碼沒有經驗,但我不確定發生了什麼。我假設服務器輸出是ASCII格式的,那麼如何調整輸出以使其在控制檯中正確顯示?
所以我。所以這意味着Java中的字符是Unicode的。感謝您結合不同輸入類的提示。這實際上回答了我的另一個問題。 – 2010-04-24 15:49:40
是的,Java字符確實是Unicode。當您將字節轉換爲字符時,您基本上將這些字節視爲ASCII字符。我有點爲Java的IO的嚴重笨拙道歉。很高興有不同的類可用於這麼多目的,但有些人想知道事情是否需要像現在這樣複雜。 – 2010-04-24 16:14:44