FTP 中ascii 和bin 的區別和使用方法

zhulch發表於2007-07-17
...[@more@]

在計算機系統中,不同的系統判斷一行是否結束的標誌是不一樣的。
檔案中的一行可以有三種結束的方式:
1.cr
2.nl ----&gtUnix呼叫一個new line的動作
3.cr lf (or lf cr)
ftp上傳的時候,有bin和ascii兩種區別

使用bin命令傳輸時,什麼也不會改變,按照原始檔傳輸,
而用ascii方式傳輸時會將行結束符從來源的機器所用的行結束符轉換成接收機器所用的行結束符。
例如:ascii可能將一個 cr 轉換成 一個 nl (這通常表示成一個 lf)。
而且ascii指示ftp注意檔案的結束符,在pc中表現為: control-z
(因此,檔案結束符可以結束檔案的內容,但不一定表示檔案的物理結束)
所以,如果檔案本身是二進位制的,應該完全不變的傳輸,這時需要使用bin模式
而對文字檔案而言,就需要轉換。否則有可能得到這樣的結果:
this line ends ^M
and another line ends ^M
and we should have ended^M but did not^M which does^M
not look great.^M^Z
這種情況發生在當來源機器使用lf cr作為行結束符而 lf 是接收機器的行結束符,
並且使用bin模式傳輸檔案時。當不確定使用什麼模式時,使用bin模式。使用bin更快些,
並且不會對檔案產生什麼傷害(因為 bin模式沒有檢查檔案和轉換行結束符)。
有很多軟體可以將文字(ascii)檔案在不同的行結束符之間進行轉換,可以用bin下載後再轉換。

根據vim裡面的help,vim裡dos格式使用單個的作為行結束符,寫檔案時,
vim使用,如果編輯一個檔案並在dos格式下儲存,vim使用替換單個的
如果是unix格式,vim使用單個作為行結束符,將顯示為^M。
在dos格式下讀並在unix格式下儲存,可以將替換為單個的

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7318139/viewspace-926793/,如需轉載,請註明出處,否則將追究法律責任。

相關文章