CRLF

CR:\r

LF:\n

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

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

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

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

### CRLF 指令定义与使用场景 CRLF 是指 **Carriage Return Line Feed** 的缩写,表示回车符(`\r`)和换行符(`\n`)。在计算机科学领域中,CRLF 常用于标记文本文件中的每一行结束位置,在网络通信协议以及数据传输过程中也扮演着重要角色。 #### 定义 CRLF 结合了两个 ASCII 字符: - `\r` (ASCII 13),称为 Carriage Return (CR),通常用来将光标移至当前行首。 - `\n` (ASCII 10),称为 Line Feed (LF),通常用来移动到下一行。 两者组合在一起形成一个完整的换行操作[^5]。 #### 使用场景 以下是 CRLF 的主要应用场景: 1. **文本文件格式化** 在不同的操作系统中,换行符的标准有所不同: - Windows 系统使用 CRLF (`\r\n`) 表示换行。 - Unix/Linux/MacOS X 系统仅使用 LF (`\n`)。 这种差异可能导致跨平台处理文本文件时出现问题,因此需要特别注意编码方式[^6]。 2. **HTTP 协议** HTTP/1.1 规范规定消息头之间以 CRLF 分隔,并且最后一行之后也需要附加额外的一个 CRLF 来标志头部部分结束并开始主体内容[^7]。 3. **电子邮件协议 SMTP 和 MIME 编码** 邮件正文内部每一段文字结尾都需要加上 CRLF;另外 Base64 编码后的二进制附件也会按照固定长度分段显示,并且每段后面都需追加 CRLF[^8]。 4. **Redis RESP 协议** Redis 使用 RESP (REdis Serialization Protocol) 处理客户端和服务端之间的交互。在此协议里,多条命令或者批量字符串均通过 CRLF 终止它们各自的组成部分[^9]。 5. **Modbus RTU 模式下的帧结构** Modbus RTU 数据包同样依赖于 CRLF 或者更确切地说是基于 CRC 校验机制来确保接收到的数据完整性。尽管这里严格意义上并非真正意义上的 CRLF 应用案例,但它确实体现了相似概念——利用特定序列界定有效负载边界[^1]. ```java // Java 示例展示如何手动构建含 CRLF 的字符串 String message = "This is a line.\r\nAnd this is another one."; System.out.println(message); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值