\n是換行,英文是linefeed,ASCII碼是0xA。
\r是回車,英文是carriage return ,ASCII碼是0xD。
如果用過機(jī)械打字機(jī),就知道回車和換行的區(qū)別了。。。
換行就是把滾筒卷一格,不改變水平位置。
回車就是把水平位置復(fù)位,不卷動(dòng)滾筒。
但是我們平時(shí)按得Enter到底是回車還是換行,不太清楚??
看到一種說法:windows下enter是 \n\r,unix下是\n,mac下是\r
在MS的系統(tǒng)中純文本格式按一個(gè)回車鍵是輸入了兩個(gè)字符,一個(gè)回車一個(gè)換行。在LINUX系統(tǒng)中則只是一個(gè)回車。
//以上內(nèi)容參考了http://topic.csdn.net/t/20040617/23/3101951.html#和http://topic.csdn.net/t/20021113/09/1171659.html的討論
還有在編程時(shí)文件操作
wb(二進(jìn)制方式)或者wt(文本方式)也會(huì)有影響。我做了個(gè)實(shí)驗(yàn)(實(shí)驗(yàn)用.net2003)
在01.txt文件中輸入12然后enter,在ultraedit中看到的二進(jìn)制是31 32 0d 0a
然后程序如下:
復(fù)制代碼 代碼如下:
int mian()
{ FILE *fp1,*fp2,*fp3,*fp4,*fp5,*fp6;
char a[10];
char b[10];
fp1 = fopen("01.txt","r");
fp3 = fopen("02.txt","w");
fread(a,sizeof(unsigned char),8,fp1); //a里是31 32 0a
fwrite(a,sizeof(unsigned char),8,fp3); //02.txt里是31 32 0d 0a ,原因是輸入的情況下,換行回車轉(zhuǎn)換成換行,然后輸出時(shí)換行又會(huì)轉(zhuǎn)成換行回車
fclose(fp1);
fclose(fp3);
fp2 = fopen("01.txt","rb");
fp4 = fopen("03.txt","wb");
fread(b,sizeof(unsigned char),8,fp2); //b里是31 32 0d 0a
fwrite(b,sizeof(unsigned char),8,fp4); //03.txt里是31 32 0d 0a ,原因是二進(jìn)制情況下回車和換行的(類似文本方式的那種轉(zhuǎn)換)是不存在的
fclose(fp2);
fclose(fp4);
return 0;
}
好像結(jié)論是這樣的:讀的方式下,在文本方式下,enter是0x0a;在二進(jìn)制方式下,enter是0x0d,0x0a。
MSDN中查到這樣的話:Also, in text mode, carriage return–linefeed combinations are translated into single linefeeds on input, and linefeed characters are translated to carriage return–linefeed combinations on output. (輸入的情況下,換行回車轉(zhuǎn)換成換行,然后輸出時(shí)換行又會(huì)轉(zhuǎn)成換行回車)When a Unicode stream-I/O function operates in text mode (the default), the source or destination stream is assumed to be a sequence of multibyte characters. Therefore, the Unicode stream-input functions convert multibyte characters to wide characters. For the same reason, the Unicode stream-output functions convert wide characters to multibyte characters.
Open in binary (untranslated) mode; translations involving carriage-return and linefeed characters are suppressed. (二進(jìn)制情況下回車和換行的轉(zhuǎn)換是不存在的).
再引用一篇:http://zhidao.baidu.com/question/27868102.html?fr=qrl3
軟硬回車 }
硬回車就是普通我們按回車產(chǎn)生的,它在換行的同時(shí)也起著段落分隔的作用。
軟回車是用 Shift + Enter 產(chǎn)生的,它換行,但是并不換段,即前后兩段文字在 Word 中屬于同一“段”。在應(yīng)用格式時(shí)你會(huì)體會(huì)到這一點(diǎn)。
切換:
編輯——替換,點(diǎn)擊高級,在“查找內(nèi)容”點(diǎn)入“特殊字符”中的手動(dòng)換行符,再在“替換為”中點(diǎn)入“特殊字符”中的段落標(biāo)記,最后點(diǎn)擊全部替換。
鍵盤上只有一種回車鍵Enter,但卻有兩種不同性質(zhì)的換行標(biāo)記,不能不說是一個(gè)奇跡。
我們常用的回車是硬回車,就是在word中敲擊Enter鍵產(chǎn)生的那個(gè)彎曲的小箭頭,占兩個(gè)字節(jié)。這種回車可以有效地把段落標(biāo)記出來分清楚。在兩個(gè)硬回車之間的文字自成一個(gè)段落,可以對它單獨(dú)設(shè)置段落標(biāo)記而不用擔(dān)心其他段落受到影響。這也是我們習(xí)慣用硬回車的原因:排版方便。
但是硬回車也給我們帶來了麻煩。你如果是網(wǎng)頁設(shè)計(jì)者,或者是論壇游俠,一定有這樣的經(jīng)歷:當(dāng)你打算換行時(shí),換出的行卻實(shí)在不能恭維,行間距太大了!其實(shí)這和硬回車的原理是一樣的,只不過在word等文本編輯器中沒有顯示出它的“本來面目”。不過這樣的排版的確造成了不小的困難,這時(shí)我們就得請出硬回車的兄弟:軟回車。
軟回車只占一個(gè)字節(jié),在word中是一個(gè)向下的箭頭。如果你從很復(fù)雜的網(wǎng)頁中向word中復(fù)制過文字的話,對它一定不會(huì)陌生。但是想在word中直接輸入軟回車可不是那么容易的。因?yàn)檐浕剀嚥皇钦嬲亩温錁?biāo)記,它只是另起了一行,不是分段。所以它不是很利于文字排版,因?yàn)樗鼰o法作為單獨(dú)的一段被賦予特殊的格式。但是盡管如此,它在網(wǎng)頁設(shè)計(jì)中還是具有舉足輕重的地位的。
軟回車能使前后兩行的行間距大幅度縮小,因?yàn)樗皇嵌温錁?biāo)記,要和法定的段落標(biāo)記——硬回車區(qū)別出來。硬回車的html代碼是p>../p>,段落的內(nèi)容就夾在里面,而軟回車的代碼很精悍:br>。因此在網(wǎng)頁中想用到軟回車,只需切換到代碼頁面,鍵入軟回車的代碼即可。
下面我講一下不同編輯器文字互相拷貝時(shí)回車的轉(zhuǎn)化情況。
地球人都知道的,網(wǎng)頁的文字如果復(fù)制到word中,則硬回車變?yōu)閺澢募^,軟回車變?yōu)橄蛳碌募^。結(jié)果造成習(xí)慣用word編輯文本的朋友很不習(xí)慣很不舒服的情況。
word中的文本復(fù)制到網(wǎng)頁中也是同樣的道理。可以說word和網(wǎng)頁比較兼容的,要不怎么會(huì)有“保存為web頁”這種選項(xiàng)呢?
記事本也是大家摸的比較多的編輯器。但是近年來隨著社會(huì)發(fā)展外加記事本的種種弊端,許多人都將其打入冷宮。對此我只能表示遺憾,因?yàn)橛浭卤颈旧淼墓δ懿回S富就是別的編輯器所取代不了的優(yōu)點(diǎn)。大家再次將網(wǎng)頁的文字復(fù)制時(shí),不妨粘貼到記事本里試試。哈哈,不管網(wǎng)頁設(shè)計(jì)者用的是什么回車,現(xiàn)在都變成一種回車了!怎么,你不信?那就看看吧:軟回車變成了普通的回車,硬回車變成了兩個(gè)普通的回車。你再從記事本里復(fù)制文字到word,記事本里的回車無一例外全都變成了硬回車!你再再從記事本里復(fù)制文字到網(wǎng)頁編輯器,所有回車就都變成軟回車了??!
您可能感興趣的文章:- 表單的焦點(diǎn)順序tabindex和對應(yīng)enter鍵提交
- 修改jQuery.Autocomplete插件 支持中文輸入法 避免TAB、ENTER鍵失效、導(dǎo)致表單提交
- form表單中去掉默認(rèn)的enter鍵提交并綁定js方法實(shí)現(xiàn)代碼