码迷,mamicode.com
首页 > Web开发 > 详细

终于记住回车和换行cr lf的来由和含义了 -参考: http://www.cnblogs.com/me115/archive/2011/04/27/2030762.html

时间:2017-11-16 11:30:20      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:htm   打印   内容   不同的   编译   font   文件   feed   文字信息   

回车: carriage return, 是将光标在同一行中, 回到当前行的 行首. 回来的本意就是 返回.. 所以 是同一行的行首. CR
换行: line feed: feed: 饲养(动物); 喂养(孩子); 供给, 供应的意思. LF

回车 用 \r 符号表示, 十进制值是 13, 十六进制是: 0x 0d.
换行: 用 \n 表示, 十进制值是10, 十六进制是 0x 0a

unix 类系统, 适用 的是 换行, lf, \n, mac系统适用 的是 回车 \r, CR 而windows 系统使用的是 回车+ 换行: CR/LF
所以, unix/mac系统下的文本文件, 在windows下, 会全部是一行, 而 windows ->unix系的文本文件, 在每一行的末尾, 会多一个控制符号 : ^M就是 \r的符号.

历史由来:

  • 电传打字机, 每秒打10个字, 1个字占0.1秒, 打完一行字后, 要把打字头 移动到下一行的开头, 需要 花 0.2秒时间. 那么, 如果 这时候 , 有字符连续传送过来时, 就会有2个字符被丢失.
  • 所以, 如果在 "要打的文字信息内容 的每一行末尾, 加上两个 字符(0.2秒) 的 "占位符" --什么字符都可以, 只是起到占位的作用, 那么当 打字机的打印头移动下一行的开头位置时, 就刚好过去0.2秒, 那么文字信息的内容, 里面两个占位符的时间也是0.2秒, 就刚好接到 新的字符内容, 而不会丢失.

-为了将这两个占位字符 更形象化, 就跟 打字头 的动作 相一致, 打字机的打字头 移动一行的头部, 给一个符号 叫 carriage return 即CR即 回车( 这个车, 指的是 打字机头)
而打字机的纸张向上/下 送给新的一行, 叫做 line feed,即LF/

这个就是 CR/LF的由来. 后来将这个 设计 移动/移植到 计算机中来, 让 每个文本文件 的 每一行, 也用 这种分割换行符号. 当时由于存储器比较昂贵, 对于计算机中的文本文件, 如果在每一行的末尾 加上这些 CR/LF符号后, 比如会增加文件的大小, 增加文件的字节数/ 存储大小. 所以, 在不同的系统中, 对这个 CR LF就发生了分歧,

在 类Unix系统中,使用 \n LF 来分割,
在Mac中使用 \r来分割,
而在 Win系统中, 则适用 CR lf : \r\n来表示.

注意 , 这个时候, 的 CR LF 已经就没有 电传打字机的 0.2 秒占位符的 意思了. 而是, 只是说 作为 文本文件中, 每一行的 分割符号了. 更有甚者, 就是 在 程序设计, 编程语言中, 将这些 \n \r作为语句的结束符号, 作为 编程语言的 编译器/解释器 作为 语法 分析的 主要 依据了!

而 linux中的 col 命令: 就是 : CR or LF 的意思??? 就是用来过滤 控制字符的 意思, 主要 用在 如 man command等命令 的 输出 中 用 管道 来 过滤 这些 控制 字符 然后输出 到 普通文件中 比如: man ls | col > ls.help

cols------------???????????/

终于记住回车和换行cr lf的来由和含义了 -参考: http://www.cnblogs.com/me115/archive/2011/04/27/2030762.html

标签:htm   打印   内容   不同的   编译   font   文件   feed   文字信息   

原文地址:http://www.cnblogs.com/bkylee/p/7842890.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!