CR, LF, CR LF 回車 換行

2021-06-26 04:55:55 字數 1293 閱讀 7583

「回車」(carriage return)和「換行」(line feed)這兩個概念的來歷和區別。

在計算機還沒有出現之前,有一種叫做電傳打字機(teletype model 33,linux/unix下的tty概念也來自於此)的玩意,每秒鐘可以打10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。

於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元。乙個叫做「回車」,告訴打字機把列印頭定位在左邊界;另乙個叫做「換行」,告訴打字機把紙向下移一行。這就是「換行」和「回車」的來歷,從它們的英語名字上也可以看出一二。

後來,計算機發明了,這兩個概念也就被般到了計算機上。那時,儲存器很貴,一些科學家認為在每行結尾加兩個字元太浪費了,加乙個就可以。於是,就出現了分歧。

unix系統裡,每行結尾只有「《換行》」,即"\n";windows系統裡面,每行結尾是「《換行》《回車 >」,即「\n\r」;mac系統裡,每行結尾是「《回車》」,即"\r";。乙個直接後果是,unix/mac系統下的檔案在 windows裡開啟的話,所有文字會變成一行;而windows裡的檔案在unix/mac下開啟的話,在每行的結尾可能會多出乙個^m符號。

在文字處理中, cr, lf, cr/lf是不同作業系統上使用的換行符.

dos和windows採用回車+換行cr/lf表示下一行, 

而unix/linux採用換行符lf表示下一行,

蘋果機(mac os系統)則採用回車符cr表示下一行.

cr用符號'\r'表示, 十進位制ascii**是13, 十六進製制**為0x0d; 

lf使用'\n'符號表示, ascii**是10, 十六制為0x0a.

所以windows平台上換行在文字檔案中是使用 0d 0a 兩個位元組表示, 而unix和蘋果平台上換行則是使用0a或0d乙個位元組表示.

一般作業系統上的執行庫會自動決定文字檔案的換行格式. 如乙個程式在windows上執行就生成cr/lf換行格式的文字檔案,而在linux上執行就生成lf格式換行的文字檔案.

在乙個平台上使用另一種換行符的檔案檔案可能會帶來意想不到的問題, 特別是在編輯程式**時. 有時候**在編輯器中顯示正常, 但在編輯時卻會因為換行符問題而出錯.

很多文字/**編輯器帶有換行符轉換功能, 使用這個功能可以將文字檔案中的換行符在不同格式單互換.

在不同平台間使用ftp軟體傳送檔案時, 在ascii文字模式傳輸模式下, 一些ftp客戶端程式會自動對換行格式進行轉換. 經過這種傳輸的檔案位元組數可能會發生變化. 如果你不想ftp修改原檔案, 可以使用bin模式(二進位制模式)傳輸文字. 

回車和換行

在計算機還沒有出現之前,有一種叫做電傳打字機 teletype model 33 的玩意,每秒鐘可以打10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。於是,研製人員想了個辦法解決這個問題,就是在每...

回車和換行

今天終於明白回車和換行的來歷了.在計算機還沒有出現之前,有一種叫做電傳打字機 teletype model 33 的玩意,每秒鐘可以打10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。於是,研製人員...

回車和換行

回車和換行 在計算機還沒有出現之前,有一種叫做電傳打字機 teletype model 33 的玩意,每秒鐘可以打 10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去 0.2秒,正好可以打兩個字元。要是在這 0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。於是,研製人員想了個辦法解決...