換行與回車

2021-06-22 08:32:53 字數 3369 閱讀 5054

**這裡

【回車和換行的歷史】

在計算機還沒有出現之前,有一種叫做電傳打字機(

teletype model 33

)的玩意,每秒鐘可以打

10個字元。但是它有乙個問題,就是打完一行,需要回車換行,此過程,要用去

0.2秒,正好可以打兩個字元。要是在這

0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。

於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元。乙個叫做「回車」,告訴打字機把列印頭定位在左邊界;另乙個叫做「換行」,告訴打字機把紙向下移一行。

【關於回車和換行的更詳細的解釋】

首先,打字機打完一行,意味著,從左到右把一行的字打完了,此時印表機的列印頭處於最右邊,所以,想要繼續打字,需要(

1)將把列印頭移動到最左邊,然後(

2)打字所用的紙張,換到下一行。而(1

)列印頭移動到最左邊的動作,稱之為回車;(2

)打字所用的紙張換到下一行,稱之為換行。其是通過打字機的滾筒滾動,將紙向前滾動,就相當於列印頭換了一行,處在新一行的最左邊的開始的位置了,即所謂的走紙。

這就是「回車」

和「換行」的來歷,從它們的英語名字上也可以看出一二。

對應到計算機系統中:

回車:將當前游標移動到同一行中的最左邊(假設是從左到右的輸入方式)

換行:保持當前游標的水平位置位置不變,換到下一行。

因此,將回車和換行聯合起來,才是我們所常理解的含義:

輸入完一行後,回車換行到下一行,即游標不僅僅是回到了最左邊,而且也換到了下一行。

【不同系統中表示回車換行含義所用字元不同】

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

不同的系統裡面,對於同樣乙個

」回車換行

」的含義,所用的字元不同:

table 1

不同系統中回車換行對應的字元

系統型別

回車換行所用字元

linux/unix

\n = newline = 0x0a = 10 = lf =line feed = 

換行 = ctrl + j

mac

\r = return = 0x0d = 13 = cr = carriage return = 

回車 = ctrl + m

windows/dos

\r \n = 0x0d 0x0a = cr lf = 

回車 換行

1. 對應的,在

linux

中通過鍵盤輸入

enter

回車鍵,輸入的是\

n=0x0a, 

而windows

中的enter

鍵則是輸入的是

0x0d 0x0a。2.

其中關於

0x0a

對應的著

ctrl + j

,0x0d

對應著ctrl + m

等等相關的

ascii

的控制字元及輸入方式,可參見:

ascii字符集中的功能/控制字元

【由於回車換行在不同系統中所用不同字元所導致的問題及解決辦法】

1. linux

中開啟windows

中的檔案 由於

linux

用\n=0x0a=10=lf

來表示換行,所以,開啟

windows

中的檔案的時候,如果其中有換行,即其中有\

r \n= 0x0d 0x0a

,此時,就會被處理為,只將

n理解為換行,而把

r看作為乙個單獨的字元,此

r字元,對應

ascii

的值是0x0d=13,

是個控制字元,對應的是用

ctrl+m=

乙個ctrl

加上乙個大寫的

m字元,在

linux

中的文字編輯器中,如

vi中,對應顯示為乙個「

^m「。

解決辦法:(1

)linux

下,用命令:?

1

tr-d"15"< myfile.txt > myfile_new.txt

將其中^m去除掉。其中

15中的

015是八進位制的

15=十進位制的

13=十六進製制的

0x0d。(

2)或者用

dos2unix

工具處理:?

1

dos2unix file_name

詳情參見:

【整理】如何取消linux下,vi中顯示的^m符號

2. mac

中開啟windows

中的檔案

同理,mac中開啟

windows

中的檔案,如果有回車換行的話,只會識別其中的\

r=0x0d,

而將餘下的\

n=0xa=lf

看成乙個單獨的字元,顯示出「

^j」。

3. windows

中開啟mac

或linux

中的檔案

經過測試,發現,在

windows

中,估計把原先的

0x0d 0x0a

去掉其中任何乙個的話,然後用

windows

下的文字類編輯器再去開啟,發現:

除了最簡單的

windows

自帶的notepad

,無法正常識別回車換行,內容被顯示到同一行中之外;其他一些編輯器,如

notepad2

,notepad++

,windows

自帶的記事本

wordpad

,都可以正常識別成回車換行,不會將內容都輸出在同一行。

對應的,也可以通過notepad++來實現在linux,windows,mac這三種格式中來回轉換,詳情參考:

notepad++中windows,unix,mac三種格式之間的轉換

【引用】

1. 回車與換行的故事

2. carriage return

3. 回車和換行的區別

4. 回車和換行有什麼區別?我們平時按下的

enter

鍵是回車還是換行?[原創

]5. 

【整理】回車(\

r, return, cr, carriage return

)和換行(\

n, newline, lf, line feed)

有什麼區別

回車與換行

就當乙個科普讀物吧,這幾天看字元裝置還對這個回車和換行還真有點兒搞不清楚。在計算機還沒有出現之前,有一種叫做電傳打字機 teletype model 33 的玩意,每秒鐘可以打10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元...

回車與換行

我想大家或多或少都在linux或unix下面編過程式,寫過 那麼你是否發現這麼乙個問題呢?就是當你在linux或unix下編寫的 文字檔案在windows下面開啟,你會發現所有的 都顯示在一行,當時讓我十分費解,這到底是為什麼呢,在linux或unix下顯示正常,為什麼在windows下卻如此不堪?...

回車與換行

縮寫 asc 轉義 系統asc 值 cr r macintosh 早期的mac 13lf nunix linux mac os x 10cr lf r n windows cr carriage return,對應ascii中轉義字元 r,表示回車 lf linefeed,對應ascii中轉義字元 ...