我正在嘗試連接到php服務器上的腳本并檢索腳本回顯的文本。完成我使用了以下代碼。代碼:=import java.net.*;import java.io.*;class con{public static void main(String[] args){ try{ int c; URL tj = new URL("http://www.thejoint.cf/test.php"); URLConnection tjcon = tj.openConnection(); InputStream input = tjcon.getInputStream(); while(((c = input.read()) != -1)){ System.out.print((char) c); } input.close(); }catch(Exception e){ System.out.println("Caught this Exception:"+e); } }}我確實得到了所需的輸出,即文本“你會非常成功”。但是當我刪除(char)類型轉(zhuǎn)換時,它會產(chǎn)生 76 位長。 8911111732119105108108329810132118101114121321151179999101115115102117108108 我無法理解的數(shù)字。我讀到getInputStream是 a byte stream,那么應該有數(shù)字乘以 8 數(shù)字長輸出嗎?任何見解都會非常有幫助,謝謝
1 回答

楊__羊羊
TA貢獻1943條經(jīng)驗 獲得超7個贊
它不會打印一個 76 位長的數(shù)字。那里有一個循環(huán),它會打印很多數(shù)字,每個數(shù)字最多三位數(shù)字(一個字節(jié))。
在 ASCII 中,89 =“Y”,111 =“o”....
您刪除的轉(zhuǎn)換char
所做的是將該數(shù)字解釋為 Unicode 代碼點并打印相應的字符(也是一次一個)。
這種逐字節(jié)讀取文本的方式非常脆弱。它基本上只適用于 ASCII。您應該使用 aReader
來包裝InputStream
. 然后你可以直接讀取char
和String
(它會處理字符集,如 Unicode)。
哦,我以為它會給出單個字母的字節(jié)表示。
但這正是它的作用。如果使用println
instead of print
(然后它將在其自己的行上打印每個數(shù)字),您可以更清楚地看到它。
添加回答
舉報
0/150
提交
取消