CR und LF
Der amerikanische Standardcode für Informationsaustausch (ASCII) definierte Steuerzeichen, einschließlich CARRIAGE-RETURN (CR) und LINE-FEED (LF), die verwendet wurden (und werden), um die Druckposition auf Druckern auf analoge Weise zu steuern mechanische Schreibmaschinen, die früheren Computerdruckern vorausgingen.
Plattformabhängigkeit
In Windows ist das traditionelle Zeilentrennzeichen in Textdateien CR, gefolgt von LF
In alten (vor OSX) Apple Macintosh-Systemen war das traditionelle Zeilentrennzeichen in Textdateien CR
In Unix und Linux ist das traditionelle Zeilentrennzeichen in Textdateien LF.
\ n und \ r
In vielen Programmier- und Skriptsprachen \n
bedeutet "neue Zeile". Manchmal (aber nicht immer) bedeutet dies, dass das ASCII-ZEILENFEED-Zeichen (LF) den Cursor (oder die Druckposition) um eine Zeile nach unten bewegt. In einem Drucker oder einer Schreibmaschine würde dies das Papier tatsächlich eine Zeile nach oben bewegen.
Bedeutet immer \r
das ASCII-Zeichen CARRIAGE-RETURN (CR), dessen Name tatsächlich von mechanischen Schreibmaschinen stammt, bei denen ein Wagenrücklaufschlüssel vorhanden war, der die Rolle ("Wagen") nach rechts bewegte, angetrieben von einer Feder. so weit es ging. So setzen Sie die aktuelle Tippposition auf den linken Rand.
Programmierung
In einigen Programmiersprachen \n
kann dies eine plattformabhängige Folge von Zeichen bedeuten, die Zeilen in einer Textdatei beenden oder trennen. print "\n"
Erzeugt beispielsweise in Perl unter Linux eine andere Zeichenfolge als unter Windows.
In Java ist die beste Vorgehensweise, wenn Sie die nativen Zeilenenden für die Laufzeitplattform verwenden möchten, nicht \n
oder \r
überhaupt nicht zu verwenden . Sie sollten verwenden System.getProperty("line.separator")
. Sie sollten \n
und \r
wo Sie möchten LF und CR unabhängig von der Plattform verwenden (z. B. wie in HTTP, FTP und anderen Internet-Kommunikationsprotokollen verwendet).
Unix stty
In einer Unix-Shell kann der stty
Befehl verwendet werden, um die Shell zu veranlassen, zwischen diesen verschiedenen Konventionen zu übersetzen. Beispielsweise stty -onlcr
veranlasst die Shell anschließend, alle ausgehenden LFs in CR LF zu übersetzen.
Linux und OSX folgen den Unix-Konventionen
Textdateien
Textdateien sind nach wie vor enorm wichtig und weit verbreitet. Beispielsweise sind HTML und XML Beispiele für Textdateien. Die meisten wichtigen Internetprotokolle, wie z. B. HTTP, folgen den Konventionen für Textdateien und enthalten Spezifikationen für Zeilenenden.
Drucker
Die meisten anderen als die billigsten Drucker respektieren immer noch CR und LF. Tatsächlich sind sie für die am häufigsten verwendeten Seitenbeschreibungssprachen - PCL und Postscript - von grundlegender Bedeutung.
\r\n
das in Windows in Ordnung\n\r
ist, aber nicht, und ich erinnere mich, dass\r\n
es ein Akronym für Registered Nurse ist. Ich habe auch gehört, dass dies unter\n
Linux verwendet wird und\r
nicht allein für den gleichen Zweck wie\r\n
.\r
wird in wirklich alten MacOS verwendet. Ich habe diese Fakten jedoch nicht überprüft.