**這裡
【回車和換行的歷史】
在計算機還沒有出現之前,有一種叫做電傳打字機(
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中轉義字元 ...