各操作系统中的换行符差异

天天见闻 天天见闻 2022-02-19 科技 阅读: 3715
摘要: HTTP/1.1将CRLF的序列定义为任何协议元素的行尾标志,但这个规定对实体主体除外。它的每一行都是以CRLF结尾的。计算机出现之前,是使用电传打字机打印字符的,它每秒可以打10个字符。Windows中打开Linux/UNIX系统下的文件时,所有的文字都会变成一行。而^M符号是Linux等系统规定的一个特殊标记,它占一个字符的大小,它不是^和M的组合,是打印不出来的

HTTP/1.1将CRLF的序列定义为任何协议元素的行尾标志,但这个规定对实体主体(endtity-body)除外

实体主体(entity-body)的行尾标志是由其相应的媒体类型定义的

于是,可以粗略理解为上面贴出来的HTTP报文中的"【报文内容】"部分(即HTTP请求的原始报文)

它的每一行都是以CRLF结尾的(所以在使用Mina2.x编写HTTP服务器时就可以根据0x0D和0x0A来判断了)

最后,回归主题:Linux上的报文尾部出现的^M符号

当使用vi查询日志时,vi内部会认为该日志为Linux格式的,它也只认LF

于是vi就会把遇到的CR干掉,取而代之的就是显示出来一个^M符号

下面再引申出来一个关于CR(回车)和LF(换行)的历史,仅供了解

计算机出现之前,是使用电传打字机(Teletype Model 33)打印字符的,它每秒可以打10个字符

但在打完一行后,准备换行时发现,换行需要用去0.2秒换行符,而这0.2秒又正好可以打印两个字符

而如果在这0.2秒期间,又有新的字符传过来,那么传过来的这个字符将丢失,因为它正在换行

于是,研制人员为了解决此问题,就决定在每行后面添加两个表示结束的字符,即CR(回车)和LF(换行)

CR(回车):告诉打字机把打印头重定位在该行的左边界

LF(换行):告诉打字机把打印头下移一行换行符,即把纸向下移一行

接着,随着计算机的发明,这种处理机制也就被移到了计算机上

但当时存储器很贵,有些人认为在每行结尾加两个字符太浪费了,应该加一个就行了,于是乎分歧出现了

DOS/Windows系统采用CRLF(即回车+换行)表示下一行

Linux/UNIX系统采用LF表示下一行

MAC系统采用CR表示下一行

这种分歧导致的直接后果就是:

Windows中打开Linux/UNIX系统下的文件时,所有的文字都会变成一行(因为Windows只认为CRLF才表示换行)

Linux/UNIX中打开Windows系统下的文件时,在每行的结尾可能会多出一个^M符号

而^M符号是Linux等系统规定的一个特殊标记,它占一个字符的大小,它不是^和M的组合,是打印不出来的

并且^M符号也只是用于显示而已,它不会真正的写入到文件中

其他相关
计算机硬件加速怎么开,电脑中如何开启3d硬件加速|电脑开启3d硬件加速图文教程

计算机硬件加速怎么开,电脑中如何开启3d硬件加速|电脑开启3d硬件加速图文教程

作者: 天天见闻 时间:2023-10-05 阅读: 80
要编写服务端代码,在创建项目之后,需要编写服务端代码。客户端代码的编写需要在服务端代码编写完成后,编写用于连接到服务端的客户端程序。Sleep(5000);}``在这个测试用例中,注入@和两个类的实例,在测试方法中调用start方法,启动服务端和客户端,最后等待5秒,测试连接是否成功。运行以上的测试代码,如果测试通过,就表示我们成功地实现了功能。...
字符更改时拆分字符串。可能的正则表达式解决方案?

字符更改时拆分字符串。可能的正则表达式解决方案?

作者: 天天见闻 时间:2023-03-14 阅读: 132
如何解决字符更改时拆分字符串。可能的正则表达式解决方案?测试;System.out.println(data + " -˃˂\\1)")))!System.out.println("-----------------------");-----------------------;22];-----------------------,前导零将使数组包含其他空字符串,...
删除awk中的换行符

删除awk中的换行符

作者: 天天见闻 时间:2022-03-09 阅读: 754
本文介绍了删除awk中的换行符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!我想删除一个日期函数换行字符,并将它包含空格。,而不是试图将变量插入到你正在做的命令字符串,你可以通过它来awk的是这样的:然后,您可以使用变量日期作为脚本中一个awk变量:这篇关于删除awk中的换行符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!...
一些关于罗马字符的知识

一些关于罗马字符的知识

作者: 天天见闻 时间:2022-03-03 阅读: 1179
下面是关于构造罗马数字的一些通用的规则的介绍:字符是叠加的。至多可以重复三次。小1)。不能连续重复四次)。含五字符不能重复。常表示为X,而从来不用VV来表示。罗马数字一般从高位到低位书写,从左到右阅读,因此不同顺序的字符意义大不相同。小100)。1的数字)。...
C/C++标准输入输出终极最全解析(不全捶我)

C/C++标准输入输出终极最全解析(不全捶我)

作者: 天天见闻 时间:2022-03-03 阅读: 588
由于输入涉及空格、换行符的读取、忽略等问题,因此输入比输出更麻烦。从指定输入流读取一个字符,输入可以是stdin,也可以是文件流,使用时需要显式指定。输出函数通常没有针对对空格、制表符的特殊行为,比输入要简单一些。stderr是标准错误流,它是无缓冲的,会立即输出到屏幕,而不是等待换行符才输出。如果希望立即输出,需要自己加上换行符\n。因此如果希望立即输出,需要自己加上换行符\n。如果希望立即输出,需要自己加上换行符\n。...
【干货】Excel中的换行符,这几种用法你会那些?

【干货】Excel中的换行符,这几种用法你会那些?

作者: 天天见闻 时间:2022-02-24 阅读: 764
提起换行符,大家更多地可能会知道在Word里面的应用换行符,但是对于在Excel中并不很了解。今天与大家聊聊Excel中的换行符的问题!CHAR是表示换行符,10表示换行符的ASCII码值。将下面的文本串的换行符替换为“XXX”。注意:如果一个空单元格中使用了组合键输入了一个强制换行符,那么使用LEN函数可以测量其长度,结果为1.在Excel自带的Power Query的功能中换行符,可以使用相关的功能将带有换行符的文本串拆分成列或者行。...
我来说两句

年度爆文