ftp 客戶端軟件的傳輸模式ASCII和二進制

FTP可用多種格式傳輸文件,通常由系統決定,大多數系統(包括UNIX系統)只有兩種模式:文本模式和二進制模式。文本傳輸器使用ASCII字符,並由回車鍵和換行符分開,而二進制不用轉換或格式化就可傳字符,二進制模式比文本模式更快,並且可以傳輸所有ASCII值,所以系統管理員一般將FTP設置成二進制模式。

 

一般來說:如果你用錯誤的模式傳輸你的圖片,你將會無法看到圖片,看到的會是亂碼。如果你用錯誤模式上傳CGI腳本,那麼就將無法運行你的腳本,會看到類似Server 500 Error的出錯信息。

 

所以你必須使用正確的模式,圖片和執行文件必須用BINARY模式,CGI腳本和普通HTML文件用ASCII模式上傳

 

ASCII和BINARY模式區別:用HTML 和文本編寫的文件必須用ASCII模式上傳,用BINARY模式上傳會破壞文件,導致文件執行出錯。BINARY模式用來傳送可執行文件,壓縮文件,和圖片文件。如果你用ASCII模式傳,會顯示一堆亂碼,你必須重新用BINARY模式傳。對於第二種情況,是因爲有很多ftp服務器和客戶端軟件能自動識別文件類型,並採取相應的傳輸方式。

 

ftp是應用層協議,和具體操作系統無關

 

ASCII模式和BINARY模式的區別是回車換行的處理,binary模式不對數據進行任何處理,asci模式將回車換行轉換爲本機的回車字符,比如Unix下是\n,Windows下是\r\nMac下是\r

 

ascii模式下會轉換文件,不能說是不同系統對回車換行解釋不同,而是不同的系統有不同的行結束符

 

unix系統下行結束符是一個字節,即十六進制的0A 

而ms的系統是兩個字節,即十六進制的0D0A 

 

所以當你用ascii方式從unix的ftp server下載文件時(不管是二進制或者文本文件),每檢測到一個字節是0A,就會自動插入一個0D

所以如果你的文件是二進制文件比如可執行文件、壓縮包什麼的,就肯定不能用了。

如果你的文件就是unix下的文本文件,你用ascii模式是正確的,要是誤用了binary模式,你在windows上看這個文件是沒有換行的,裏面是一個個的黑方塊。一般來說,我們最好都用binary方式,這樣可以保證不出錯。

如果有文本格式轉換的問題,即unix格式的文本dos格式的文本之間的轉換,有很多工具可以做的,不要在ftp傳輸的時候冒險,尤其是你如果對這些東西不是非常清楚的話。可以使用MIME,把所有的字符,轉換成0~128之間的字符,然後傳送,在接受方再將接收到的字符MIME反向轉換。通常我們發送郵件,就是使用這樣的字符轉換方式。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章