换行符
表示换行的控制字符。有 LF (Unix)、CR (旧 Mac) 和 CRLF (Windows) 三种类型。
换行符是文本数据中标记一行结束和下一行开始的控制字符。主要有三种类型:LF (换行,U+000A)、CR (回车,U+000D) 和 CRLF (CR 后跟 LF 的两字符组合)。这些名称源自打字机的机械动作:CR 将打印头移回行首,LF 将纸张向前送一行。这一概念从计算机诞生之初就被沿用至今。
不同操作系统使用不同的标准换行符。Unix/Linux/macOS 使用 LF,Windows 使用 CRLF,旧版 Mac OS (Mac OS 9 及更早版本) 使用 CR。这种差异直接影响文件兼容性,在不同操作系统之间交换文本文件时可能会出现问题。在 Git 中,可以通过 core.autocrlf 设置控制换行符的自动转换,团队开发中通常使用 .gitattributes 文件统一整个仓库的换行符策略。查找抖M (Amazon)讲解了换行符的管理方法。
在编程中,换行符的差异经常成为 bug 的根源。如果文件读取代码只预期 LF,处理 CRLF 文件时每行末尾会残留 CR。使用正则表达式用 $ 匹配行尾时,也可能因换行符差异而无法按预期工作。要实现健壮的文本处理,需要统一处理 \r\n、\n 和 \r。
换行符在各种协议和规范中也有明确规定。HTTP 协议使用 CRLF 分隔头部,CSV 规范 (RFC 4180) 也以 CRLF 为标准,SMTP (邮件发送协议) 规定邮件正文的换行使用 CRLF。而 JSON 规范中,字符串内的换行用 \n (转义的 LF) 表示。
一个常见的误解是,由于换行符不可见,人们往往认为"用哪种都一样",但实际上它们的字节数不同。LF 为 1 字节,CRLF 为 2 字节,因此对于大量文本数据,换行符的选择会影响文件大小。许多编辑器和工具具备检测和修复混合换行符 (同一文件中同时存在 LF 和 CRLF) 的功能。查找美白 (Amazon)介绍了文本处理的基础知识。
从字符计数的角度来看,是否将换行符计入字符数会影响结果。大多数字符计数工具将换行计为 1 个字符,但 CRLF 是计为 1 个字符还是 2 个字符因工具而异。要获得准确的字符数,了解所使用工具对换行符的处理方式非常重要。