在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新 的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头 定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

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

Unix 系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车 >”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开 的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。所以,如果你需要跨平台处理文 本文件,可能会被回车换行搅得有点头大。

0x0D(asc码是13) 指的是“回车”   \r是把光标置于本行行首

0x0A(asc码是10) 指的是“换行”    \n是把光标置于下一行的同一列

0x0D + 0x0A        回车换行          \r\n把光标置于下一行行首

\n是换行,英文是linefeed,ASCII码是0xA。

\r是回车,英文是carriage return ,ASCII码是0xD。

如果用过机械打字机,就知道回车和换行的区别了。。。

换行就是把滚筒卷一格,不改变水平位置。

回车就是把水平位置复位,不卷动滚筒。

但是我们平时按得Enter到底是回车还是换行,不太清楚??

看到一种说法:windows下enter是 \n\r,unix下是\n,mac下是\r

在MS的系统中纯文本格式按一个回车键是输入了两个字符,一个回车一个换行。在LINUX系统中则只是一个回车。

//以上内容参考了http://topic.csdn.net/t/20040617/23/3101951.html#和http://topic.csdn.net/t/20021113/09/1171659.html的讨论

还有在编程时文件操作

wb(二进制方式)或者wt(文本方式)也会有影响。我做了个实验(实验用.net2003)

在01.txt文件中输入12然后enter,在ultraedit中看到的二进制是3132 0d 0a

然后程序如下:

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 320d 0a ,原因是输入的情况下,换行回车转换成换行,然后输出时换行又会转成换行回车

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 320d 0a ,原因是二进制情况下回车和换行的(类似文本方式的那种转换)是不存在的

fclose(fp2);

fclose(fp4);

return  0;

}

好像结论是这样的:读的方式下,在文本方式下,enter是0x0a;在二进制方式下,enter是0x0d,0x0a。

MSDN中查到这样的话:Also, intext mode, carriage return–linefeed combinations are translated into singlelinefeeds on input, and linefeed characters are translated to carriage return–linefeedcombinations on output. (输入的情况下,换行回车转换成换行,然后输出时换行又会转成换行回车)Whena Unicode stream-I/O function operates in text mode (the default), the sourceor destination stream is assumed to be a sequence of multibyte characters.Therefore, the Unicode stream-input functions convert multibyte characters towide characters. For the same reason, the Unicode stream-output functionsconvert wide characters to multibyte characters.

Open in binary (untranslated) mode;translations involving carriage-return and linefeed characters are suppressed. (二进制情况下回车和换行的转换是不存在的).

再引用一篇:http://zhidao.baidu.com/question/27868102.html?fr=qrl3

软硬回车 }

硬回车就是普通我们按回车产生的,它在换行的同时也起着段落分隔的作用。

软回车是用 Shift + Enter 产生的,它换行,但是并不换段,即前后两段文字在 Word 中属于同一“段”。在应用格式时你会体会到这一点。

切换:

编辑——替换,点击高级,在“查找内容”点入“特殊字符”中的手动换行符,再在“替换为”中点入“特殊字符”中的段落标记,最后点击全部替换。

键盘上只有一种回车键Enter,但却有两种不同性质的换行标记,不能不说是一个奇迹。

我们常用的回车是硬回车,就是在word中敲击Enter键产生的那个弯曲的小箭头,占两个字节。这种回车可以有效地把段落标记出来分清楚。在两个 硬回车之间的文字自成一个段落,可以对它单独设置段落标记而不用担心其他段落受到影响。这也是我们习惯用硬回车的原因:排版方便。

但是硬回车也给我们带来了麻烦。你如果是网页设计者,或者是论坛游侠,一定有这样的经历:当你打算换行时,换出的行却实在不能恭维,行间距太大了! 其实这和硬回车的原理是一样的,只不过在word等文本编辑器中没有显示出它的“本来面目”。不过这样的排版的确造成了不小的困难,这时我们就得请出硬回 车的兄弟:软回车。

软回车只占一个字节,在word中是一个向下的箭头。如果你从很复杂的网页中向word中复制过文字的话,对它一定不会陌生。但是想在word中直 接输入软回车可不是那么容易的。因为软回车不是真正的段落标记,它只是另起了一行,不是分段。所以它不是很利于文字排版,因为它无法作为单独的一段被赋予 特殊的格式。但是尽管如此,它在网页设计中还是具有举足轻重的地位的。

软回车能使前后两行的行间距大幅度缩小,因为它不是段落标记,要和法定的段落标记——硬回车区别出来。硬回车的html代码 是<p>..</p>,段落的内容就夹在里面,而软回车的代码很精悍:<br>。因此在网页中想用到软回车,只需切 换到代码页面,键入软回车的代码即可。

下面我讲一下不同编辑器文字互相拷贝时回车的转化情况。

地球人都知道的,网页的文字如果复制到word中,则硬回车变为弯曲的箭头,软回车变为向下的箭头。结果造成习惯用word编辑文本的朋友很不习惯很不舒服的情况。

word中的文本复制到网页中也是同样的道理。可以说word和网页比较兼容的,要不怎么会有“保存为web页”这种选项呢?

记事本也是大家摸的比较多的编辑器。但是近年来随着社会发展外加记事本的种种弊端,许多人都将其打入冷宫。对此我只能表示遗憾,因为记事本本身的功 能不丰富就是别的编辑器所取代不了的优点。大家再次将网页的文字复制时,不妨粘贴到记事本里试试。哈哈,不管网页设计者用的是什么回车,现在都变成一种回 车了!怎么,你不信?那就看看吧:软回车变成了普通的回车,硬回车变成了两个普通的回车。你再从记事本里复制文字到word,记事本里的回车无一例外全都 变成了硬回车!你再再从记事本里复制文字到网页编辑器,所有回车就都变成软回车了!!

回车换行0x0D和0x0A 小谈相关推荐

  1. 回车换行问题0x0D和0x0A

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

  2. 【转载】 C++中回车换行(\n\r)和换行(\r)的区别

    原文:http://blog.csdn.net/xiaofei2010/article/details/8458605 windows下的点一下回车,效果是:回车换行,就是\r\n unix系统下的回 ...

  3. ANSI/UTF-8/UCS2(UTF-16),以及回车换行

    最近遇到一个linux 平台上invisible character (0x1d)引起的数据装载失败问题,正好借此机会整理一下字符编码的相关知识. 回车/换行: ================= 顾 ...

  4. Delphi 小谈之TList 篇

    Delphi 小谈之TList 篇 2010年08月23日 看了这里标题,大家可能以为我会谈TListBox控件,那就错了.我要谈的是Delphi提供给我们的具有列表性质的类:TstringList. ...

  5. 0x0d和0x0a 学习

    今天在看代码时看到 0x0D和0x0A,那个是换行,那个是回车呢? 说实话,不清楚,到网上搜一下吧,看到了,知道了! if (szCh == 0x0D)         {           con ...

  6. 关于0x0d与0x0a的ASCII。

    今天发现一个有趣的现象: 在masm(我用的版本是6.11)中作汇编时发现,0x0d与0x0a有着不同的作用.比如: "dead for dream" 在这个字符串后只加上0x0d ...

  7. linux系统下回车换行符

    简述 回车换行符在文本文件的读写中经常用到,windows下面稍微复杂点,linux系统下更为简单. 详述 回车和换行是两个不同的概念. 回车,就是告诉计算机把头定位在左边界:换行,就是把头向下移动一 ...

  8. 不同系统下的回车换行

    这是电脑中以前的笔记,都已经不知道原文链接了,选择了翻译,这是转载 '\r'是回车,前者使光标到行首,(carriage return) '\n'是换行,后者使光标下移一格,(line feed) \ ...

  9. C# 中的回车换行符 表示

    在 C# 中,我们用字符串 "/r/n" 表示回车换行符. string str = "第一行/r/n第二行"; 但是我们更推荐 Environment.New ...

最新文章

  1. 如何教计算机认识手写数字(上)
  2. Raft 为什么是更易理解的分布式一致性算法——(1)Leader在时,由Leader向Follower同步日志 (2)Leader挂掉了,选一个新Leader,Leader选举算法。...
  3. php处理小程序上传图片,微信小程序上传图片,PHP-Laravel框架实现
  4. FluentNhibernate 的数据库连接的配置
  5. css二级菜单的隐藏与显示_具有二级菜单的导航案例
  6. SVN自助更新:运维利器Puppet实例讲解
  7. r语言kendall协和系数_多变量Kendall协和系数检验.ppt
  8. centos虚拟机复制后网络重启出错解决
  9. Atitit.加密算法 des  aes 各个语言不同的原理与解决方案java php c#
  10. C语言房地产销售管理系统,房地产销售管理系统的设计与实现
  11. 服务器定时发送qq消息,python实现定时发送qq消息.pdf
  12. 组件测试 软件,测试AUTOSAR软件组件的测试方法及系统专利_专利查询 - 天眼查
  13. 微小宝公众号排行榜_微小说免费阅读网公众号大全推荐资源网
  14. TOM企业邮箱注册流程是什么,如何开通邮箱
  15. 浅谈Wi-Fi渗透--原理篇
  16. Ubuntu之Sailfish OS开发环境搭建
  17. 兔子、狼、老虎的故事
  18. 分享一个c++连线小游戏
  19. 递增的三元子序列(来源力扣)
  20. 职场PUA,管理者的五宗罪

热门文章

  1. 【划重点】Python xlrd简介
  2. 基于微信小程序/安卓APP的校园小助手系统
  3. ueditor处理不能上传音乐的问题
  4. mysql中自定义nvl函数
  5. JavaScript可视化——Flot选择图表
  6. bonding(绑定与删除)
  7. 小论文写作指南(AI类)
  8. 【后端】手机号码校验(正则表达式)
  9. iOS - Swift - 语法糖
  10. 《AR与VR开发实战》——2.3 创建AR视频