r n, n, r的歷史及在不同系統下的區別

2021-07-26 13:03:06 字數 1033 閱讀 1109

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

於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元。乙個叫做「回車」,比喻列印頭定位在左邊界;另乙個叫做「換行」,比喻打字機把紙向下移一行,在列印的時候丟失的這兩個標記字元正好可以擬補印表機的缺陷,這樣就能避免丟失有效字元了。這就是「換行」和「回車」的來歷,從它們的英語名字上也可以看出一二。

後來,計算機發明了,這兩個概念也就被般到了計算機上。那時,儲存器很貴,一些科學家認為在每行結尾加兩個字元太浪費了,加乙個就可以。於是,就出現了分歧。unix系統裡,每行結尾只有「《換行》」,即「\n」;windows系統裡面,每行結尾是「《換行》《回車》」,即「\n\r」;mac系統裡,每行結尾是「《回車》」。乙個直接後果是,unix/mac系統下的檔案在windows裡開啟的話,所有文字會變成一行;而windows裡的檔案在unix/mac下開啟的話,在每行的結尾可能會多出乙個符號^m(在unix下多出乙個\r,在mac下多出乙個\n)。

window下,編輯檔案

可以看到,生成了1(32)和1之間插入了\r(0d)\n(0a)

不過在window下,用瀏覽器執行以下頁面:

12

得到的效果是這樣的:

瀏覽器在解析處理的時候會自動把\r去掉。

最後,為了保險起見,我們程式設計的時候如果要匹配換行,最好三者都要匹配(\r\n|\r|\r)

gradle在不同系統下適配

有時我們需要自己定製一些gradle的執行task,可能會用到一些系統中的其它環境,這時需要我們針對不同的os做一些適配。方法一 獲取os的name判斷其中是否包含windows欄位 def iswindows 方法二 通過operatingsystem類中的方法來判斷當前環境 def iswind...

sqlite不同系統下的安裝

sqlite 的乙個重要的特性是零配置的,這意味著不需要複雜的安裝或管理。本章將講解 windows linux 和 mac os x 上的安裝設定。建立資料夾 c sqlite,並在此資料夾下解壓上面兩個壓縮檔案,將得到 sqlite3.def sqlite3.dll 和 sqlite3.exe ...

python在不同系統下的中文編碼問題

上週在做qq郵箱的模擬登入,在呼叫郵件查詢介面的時候,遇到了查詢字串下中文編碼的問題,本質是python2環境下中文編碼的問題。windows windows下通過cmd開啟python終端,預設的編碼方式是gbk。c windows system32 python python 2.7 13 an...