近日,SQLite数据库的创始人Richard Hipp提出,CRLF已经过时,应当被废除。他认为在大多数编程语言和现代计算机中,仅使用LF即可表示新行,而CR在大多数情况下已无实际用途。
提到CRLF换行字符,其中CR(Carriage Return)表示光标回到起始点(\r),LF(Line Feed)表示光标移往下一行(\n)。
CRLF的存在主要是为了兼容不同操作系统的文件格式,通常Windows使用CRLF作为分行符号,而Unix/Linux和macOS只使用LF。
CRLF的起源可以追溯到70年前的机械打字机时代,而现代计算机环境中早已不再需要这样的字符组合。
对于这个观点,有支持的也有不支持的。
持支持观点的表示,去掉它可以减小文件大小;大部分软件系统已经能很好地处理只有LF的换行,所以取消CR问题也不大;使用只有LF的换行更加合理和清晰,不会引起混乱,可以避免不必要的复杂性。
不支持该观点的认为,处理不同或混合的行结尾并不是一个复杂的问题,不应该因为个别人的便利而改变现有的标准协议;真正的问题在于那些设计不良的Unix工具和Git,它们在处理文本行结尾时本身就有问题;有些系统还依赖于CRLF,突然改变换行符可能会给这些系统的用户带来不便;保留CR作为换行符可以确保代码在不同平台之间的更好兼容性,特别是在处理遗留代码时很有帮助。
其实这也不是什么大问题,对我来说两者都考虑即可!
最后Hipp撤回了自己的提议,他认为想法很好,但现实中的软件依赖情况比他预想的要复杂得多。
最后举个例子,如果使用Notepad匹配CRLF换行符,可以开启extended扩展模式,如下:

Hipp还提出了四点建议,包括停止使用不必要的CR字符、更改Unicode中U+000a的名称为“newline”而非“linefeed”等。




