免费发布网络营销推广信息 推广 热搜: 新纪元期货  HFRR  科技信息数码  仪器 

\r,\n,\r\n的区别

   日期:2023-06-14     浏览:125    评论:0     买帖  | 修改  | 投诉  | 刷新
在Windows中
 
\r:表示回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖(光标在该行的头部)
 
\r\n:表示换行,换到当前位置的下一行(光标在下一行的头部)
 
在Unix/Linux系统中
 
\n:表示换行
 
在Mac中
 
\r:表示换行
 
可能的问题
 
Unix/Linux/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;
 
而Windows里的文件在Unix/Linux/Mac下打开的话,在每行的结尾可能会多出一个^M符号.
 
$ echo -en '12\n34\r56\n\r78\r\n' > tmp.txt
 
windows中的效果: 显示在一行,最后的\r\n才实现换行.
 
 
linux中的效果 : 出现^M符号.
 
 
注意:
 
windows中,\r\n才会换行,缺少一个控制符或者顺序不对,都不能正确的另起一行.\r或\n只能够显示一个字符,是没有换行的效果的.
————————————————

#产生的历史原因:
二战中,出现了电传打字机。

 

 

这种打字机是机械式针头,每秒只能打印10个字符,当针头跑完第一行,从最右边下移到第2行的最左边时,需要耗时0.2秒,从而导致会丢失2个字符。
于是,研制人员想了一个办法:在每行后面加两个表示结束的字符,目的就是解决这个0.2秒的延迟问题

 

 

1)一个字符是: 回车(\r):CR(Carriage Return的缩写,Ascii码是13),告诉打字机需要“把打印头定位在行首”;
2)一个字符是: 换行(\n):LF(Line Feed的缩写,Ascii码是10),告诉打字机“把打印纸向下移动一行”;

 

 

ntenteditable="false" style="border: 0px; max-width: 100%;" width="676" height="501" alt="" />
二战中美国使用的打字机

 

 


# 业界现状:
电子计算机问世后,这两个概念也同时被引入。

 

 

因为存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就够了。

 

 

从此,计算机界就出现了分歧。
微软Windows系统:每行结尾有“<回车><换行>”,即“\r\n”
Unix/Linux系统: 每行结尾只有“<换行>”,即"\n"
苹果Mac系统: 每行结尾只有“<回车>”,即"\r"

由此产生的后果是:
Unix/Linux/Mac系统生成的文本文件,当在Windows里打开时,会变成一行;

 

 

而Windows文件在Unix/Linux/Mac系统下打开时,会在每行的结尾会多出一个^M符号。

 
打赏
 
更多>同类资讯
0相关评论

推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
 
展开