所有操作系统的通用换行符是什么? (LF和CR)

时间:2010-09-15 18:28:34

标签: windows delphi macos newline

当我使用Delphi编写文件时,它在Windows机器上,它发出的文本文件在Windows上运行正常。当我在Mac上使用它虽然它期望格式有点不同。在Mac上,换行符不同,并且无法始终读取Windows文件。

如何通过mac程序使我的文件可读?

6 个答案:

答案 0 :(得分:26)

  • 对于Windows,它是CRLF
  • 对于UNIX,它是LF
  • 对于MAC(直到版本9),它是CR
  • 对于MAC OS X,它是LF

简单的事实是,它对所有操作系统都不同。没有“通用”换行符。你能做的最好的就是意识到差异。

答案 1 :(得分:8)

所有操作系统都没有通用换行符。你必须在某些地方使用换行,在其他地方使用回车,在其他一些地方都使用。

大多数文本编辑器可以处理多种行结尾 - 请查看您的文档。还有很多实用程序可以为您翻译行结尾。

答案 2 :(得分:4)

在系统单元中,有一个基于OS设置的全局变量DefaultTextLineBreakStyle。它可以是tlbsLF或tlbsCRLF。 如果是tlbsLF,请使用#10,如果是tlbsCRLF则使用#13#10。

来自系统:

type
  TTextLineBreakStyle = (tlbsLF, tlbsCRLF);

var   { Text output line break handling.  Default value for all text files }
  DefaultTextLineBreakStyle: TTextLineBreakStyle = 
  {$IFDEF LINUX} tlbsLF {$ENDIF}
  {$IFDEF MSWINDOWS} tlbsCRLF {$ENDIF}
  {$IFDEF MACOS} tlbsLF {$ENDIF};

我只是想知道为什么它是var而不是const。

答案 3 :(得分:2)

您可以编写“通用格式”,而不是“通用换行符”,例如JSONXML,PDF等,具体取决于您的输出是否会用作其他程序或报告的数据文件由人类阅读。

答案 4 :(得分:1)

http://en.wikipedia.org/wiki/Newline

因此,您必须为MacOS编写$0D版本9,并为MacOS X编写$0A

答案 5 :(得分:0)

非常老的线程仍然非常相关。 当您从不同的操作中获取文本数据时,处理此情况和其他情况的最简单方法是首先对信息进行规范化。 这是Javascript,但您应该可以轻松地将其更改为任何其他语言。

        body = body.replace(/(\r\n|\r)/g,"\n");

在大多数语言中,它都可以翻译成这种语言(但在JS中,它将替换第一次出现的情况。)

        body = body.replace("\r\n","\n");
        body = body.replace("\r","\n");

如果要使用Windows格式的实例,只需在上面的后面添加即可,只需确保换行符由“ \ n”表示即可。

        body = body.replace("\n","\r\n");