字符 / 换行 / 编程语言 · 2023年 10月 15日 0

换行和回车

59 次浏览

"空白字符"一章有介绍打字机换行和回车的差异,不同操作系统的实现也不太一样。

操作系统"换行"的不同形态

  • Mac Classic
    • Mac OS 9及更早版本中,使用的是\r作为行结束符。
  • macOS
    • 从Mac OS X(现在称为macOS)开始,Mac系统也逐渐转向使用\n.
  • Windows
    • 和打字机对应,回车+换行 "\r\n"
  • Linux
    • 换行符'\n'

为什么文本文件"\r\n"和"\n"效果似乎无差别?

  • 现代操作系统已经不会像计算机早期那样,用打字机模式‘\r’是打字头回归开始,'\n'是打字头换到下一行,它们只需要换行就够了。例如Windows操作系统会对"\r\n"特别处理,只会对应换行。所以,现代操作系统可能无视'\r',实际作用只有'\n'.
    • 值得注意的是,毕竟'\r'和'\n'对应的ASCII码不同,用Linux打开Windows系统的文本文件可能出现有特殊字符,要理解这可能是回车换行符的差异。
  • 注意,如果是代码中用"\r\n"可能意味着是两次换行,和文本文件的表现可能有差异。
    • 例如C语言和Python输出"\r\n"会出现两次换行。

兼容的换行符

  • C# 可以使用 System.Environment.NewLine 指代换行符,在Windows等同于 \r\n, 在Linux平台等同于 \n.
    String s = "a" + Environment.NewLine + "b";
    Console.WriteLine(s.Length); // Windows: 4, Linux: 3