当前位置: 首页 > article >正文

回车与换行符号\n,\r\n,^M符号

原文作者:阮一峰

今天,我总算搞清楚"回车"(carriage return)和"换行"(line feed)这两个概念的来历和区别了。

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做"回车",告诉打字机把打印头定位在左边界;另一个叫做"换行",告诉打字机把纸向下移一行。

这就是"换行"和"回车"的来历,从它们的英语名字上也可以看出一二。

后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

Unix系统里,每行结尾只有"<换行>",即"\n";Windows系统里面,每行结尾是"<回车><换行>",即"\r\n";Mac系统里,每行结尾是"<回车>"。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。


之前遇到的两个问题,看完这篇文章后豁然开朗。

1)换行代码里写的符号是\r\n,找了很久都没找到含义;看完后才知道Linux系统是\n,而Windows系统的换行符是\r\n。

2)PyCharm写好的代码,放到Linux上却每行末尾都显示^M符号;看完明白是因为系统间换行符的区别。

http://www.lryc.cn/news/2420106.html

相关文章:

  • Dart从入门到入土【持续更新】
  • BREW 转自百科
  • 一篇文章教你玩转,入门级 SQL 注入实战!
  • App自动化测试 —— Appium的使用
  • 【每日英语】identical
  • 仿宋-GB2312字体
  • localStorage、sessionStorage、cookie分别是什么以及区别+浏览器存储方法
  • MySQL主从- slave跳过错误
  • 冒泡排序--详细讲解
  • SQL学习(W3School)
  • 2024软路由介绍及新手入门(一) #软路由 #openwrt
  • SGD简介
  • Compose简介
  • Button简介
  • [摩斯密码表]摩斯密码对照表
  • 关于电容的科普知识
  • 安全防御----APT
  • webGL入门知识讲解
  • 疫情之下,分享几款免费CRM系统,提高在家办公效率!
  • 安装umi及使用umi脚手架创建项目
  • 【CMMI】3、什么是CMMI
  • Java之数组(Array)
  • WHEE美图|AI创作零基础教程-文生图篇
  • 写给 MySQL 开发者的 TDengine 入门指南
  • Android Audio知识梳理 看完这一篇就够了!
  • 【计算机网络子网掩码详解】
  • R语言入门
  • go语言介绍及应用场景分析
  • canal的安装与使用
  • Less —— 一种CSS预处理器,可编程化书写CSS