ASII码中控制字符CR和LF的含义
CR意思是carriage return,回车,\r,ASCII码为13
LF意思是linefeed,换⾏,\n,ASCII码为10
当你⽤⼀个打字机的时候,asdfghjkl;'右边的那个按钮(在计算机键盘上,就对应着那个Enter键)被按下的时候,打字机的纸张卷动⼀⾏,⽽纸张的⽔平位置并不变化。打字机上另外还有⼀个⼿柄,那个⼿柄是专⽤来“回车”的,向左搬动那个⼿柄的时候,装纸的结构被松开,在弹簧的作⽤下弹回最右边(相当于打印头回到最左边)。
所以当我们要换⾏的时候,实际需要两步操作,回车+换⾏(或者反过来),所以,在VB(含VBScript)⾥⾯有⼀个字符串常量叫做vbCrLf,意思就是回车+换⾏。CR+LF也是多种协议规定的标准⾏结束符(RFC0821-SMTP,RFC1939-POP,RFC2060-
IMAP,RFC2616-HTTP),在DOS和Windows中,需要另起⼀⾏的时候也需要这两个字符。
在Windows的记事本中创建⼀个⽂档,直接保存的话你会发现这个⽂件⼤⼩是0字节(保存为ANSI编码),然后,打开这个⽂件,敲⼊⼀个回车符,保存,你会发现这个⽂件的⼤⼩变成了2字节。
ascii文字是啥但是,为什么在C语⾔⾥⾯只⽤LF(\n)就可以换⾏呢?因为C语⾔的出现就是为了写UNIX操作系统,⽽UNIX操作系统中以LF为⾏结束符,并且⾃动加上那个CR,以便节省⼀个字节的长度(这样做在当时存储容量不⼤的计算机上确实是有意义的,⽽为了不断兼容,到现在这个规定也没有改变)。在C语⾔中,运⾏库会在显⽰时把LF⾃动转换为CR+LF(注意是运⾏库,⽽不是编译器,所以即使打开EXE⽂件,到对应的位置,只能到⼀个0x0A的LF,⽽没有CR)。
现有的Linux仍然保持了只⽤LF当作⾏结束符的传统,在Windows记事本中打开这种在Linux下写的⽂本⽂件就会发现全部内容都在⼀⾏上,⽽在应该换⾏的地⽅有⼀个⼩⿊块,记事本只能处理Windows/DOS格式的⽂本⽂件。
在Windows的GUI(图形⽤户界⾯)下,对于换⾏的要求其实并不严格,⼀般情况下⽤⼀个\n都能解决问题,所以在VB中写
Msgbox("" & Chr(13) & "blah")或者在C语⾔中直接⽤含有\n的字符串来调⽤⼀个Windows API(应⽤程序编程接⼝),都不会出现问题。
在另外⼀个主流的操作系统MacOS当中,⾏结束符是LF+CR,恰好和Windows相反,⽤记事本打开这种⽂件——记事本当然也⽆法处理这种⾏结束符——就不分⾏了,⽐Linux⽂件的显⽰⽅式还要恶⼼⼀些,因为,没有⼀个记号告诉你,这⾥是新的⼀⾏的开始。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论