2010-09-29 14 views
5

Sie beide bedeuten "neue Linie", aber wann wird man über die andere verwendet?Was ist der Unterschied zwischen n und r n?

+0

Wenn Sie den '\ r' verpassen, wird der Wagen in seine Startposition nicht zurück ;-) – chiccodoro

+0

haha ​​schön 7 Antworten in 5 Min .. mit nur 29 Ansichten, bedeutet 1/4 Leute schrieben eine Antwort :) –

+0

Aber das ist definitiv _not_ Sprache agnostic. '\ r \ n' sind häufige Fluchtfolgen in vielen c- und c-ähnlichen Sprachen, aber definitiv nicht in allen Sprachen. – Oded

Antwort

16

\r\n ist einen Windows- Stil

\n ist ein POSIX Stil

\r ist ein alter Pre-O X Macs Style, Moderne Mac mit POSIX Stil.


\r ist eine carrige Rückkehr und \n ist ein Zeilenvorschub, in alten Computern, wo es nicht Monitor hat, hat nur Drucker Programme Benutzer führen, um aus, wenn Sie den Druck von starren neuen wollen von links Linie, müssen Sie \n für Linie-Feed und \r für bekommen Carriage Return Mit auf die meisten linke Position bekommen, ist dies aus alten Computern Syntax zu dieser Zeit auf Windows- Plattform gespeichert.

+0

Beachten Sie, dass "\ r" nur "Mac Style" für Pre-OS X Macs ist. Moderne Macs verwenden den POSIX-Stil, da sie letztlich auf einem BSD-Derivat basieren. –

+0

@Tyler McHenry: vielen Dank für die Überprüfung, aktualisiert! ;-) – Svisstack

+1

CR + LF wird häufig in vielen Netzwerkprotokollen (wie HTTP) verwendet, unabhängig vom Betriebssystem, das zum Übertragen der Daten verwendet wird. '\ r' wird normalerweise CR zugeordnet, wenn das Zielsystem ASCII oder Unicode als sein Zeichensystem verwendet. (Wenn das Zielsystem EBCDIC verwendet, dann hat '\ r' möglicherweise keine Zuordnung.)' \ N' ist komplizierter, da es vom Kontext abhängt. Es wird oft einem ASCII/Unicode LINE FEED zugeordnet, aber es ist nicht immer so einfach. Antworten auf die Frage "Mögliche Duplikate" enthält Details. –

1

'\ n' ist der Standard in Unix, '\ r \ n' ist der Standard in Windows.

2

\ n ist nur ein Zeilenumbruch, \ r \ n ist ein Zeilenumbruch und ein Wagenrücklauf (d. H. Den Cursor nach links bewegen).

1

Verschiedene Betriebssysteme behandeln Newlines auf andere Weise. Hier eine kurze Liste der gebräuchlichsten: DOS und Windows

Sie erwarten, dass eine neue Zeile die Kombination aus zwei Zeichen ist, nämlich '\ r \ n' (oder 13 gefolgt von 10).

Unix (und damit auch Linux)

Unix verwendet eine einzelne '\ n' eine neue Zeile anzeigt.

Mac

Macs ein einzelnes verwenden '\ r'.

so verursacht dies Probleme, wenn Sie Ihre App von Windows auf Mac portieren, wenn Sie Ordnerpfad und dergleichen verwenden.

0

Der Unterschied zwischen verschiedenen Betriebssystemen ist, auf Windows, das Newline-Zeichen ist \r\n während auf Linux ist nur \n Mac OSX hat gerade \r seine wirklich nur eine Frage dessen, was die Designer des OS es gemacht zu sein

1

\ n bedeutet neue Zeile. Dies bedeutet, dass der Cursor zur nächsten Zeile gehen muss.

\ r bedeutet Wagenrücklauf. Es bedeutet, dass der Cursor zum Anfang der Zeile zurückgehen sollte.

Unix- und Unix-Programme benötigen normalerweise nur eine neue Zeile (\ n).

Windows- und Windows-Programme benötigen normalerweise beides.

1

Dies ist, wie neue Linie wird in Betriebssystemen Windows (\ r \ n) und Linux (\ n)

Unter Unix ist die \ repräsentiert r ein Carriage Return (CR) und die \ Line Feed na (LF) die zusammen die be newline Bezeichner sein und Sie ersetzen sie mit einem Unix Newline Identifier.

Unter Windows ist die \ r auch eine CR, aber \ n ist eine Kombination aus CR und LF. So effektiv versuchen Sie CR + CR + LF mit CR + LF zu ersetzen. Macht nicht viel Sinn, tut es.

Von "perldoc perlop": Alle Systeme verwenden das virtuelle "" \ n "", um einen Leitungsabschluss zu repräsentieren, genannt eine "Newline". Es gibt keinen unveränderlichen, physischen Newline-Charakter. Es ist nur eine Illusion, dass das Betriebssystem, Gerätetreiber, C-Bibliotheken und Perl zusammen zu bewahren. Nicht alle Systeme lesen "" \ r "" als ASCII CR und "" \ n "" als ASCII LF. Zum Beispiel, auf ein Mac, diese sind umgekehrt, und auf Systemen ohne Leitungsabschluss, Drucken "" \ n "" kann keine tatsächlichen Daten ausgeben. Im Allgemeinen verwenden Sie "" \ n "", wenn Sie eine "newline" für Ihr System bedeuten, aber verwenden Sie das wörtliche ASCII, wenn Sie ein genaues Zeichen benötigen. Zum Beispiel erwarten die meisten Netzwerkprotokolle und bevorzugen eine CR + LF ("" \ 015 "\" 012 "" \ "\ cM \ cJ" ") für Zeilenabschlusszeichen, und obwohl sie oft nur" "akzeptieren. tolerieren sie selten nur "" 015 "". Wenn Sie sich angewöhnen, "" \ n "" zum Netzwerken zu verwenden, können Sie möglicherweise eines Tages gebrannt werden .

0

In C# können Sie nur Environment.NewLine verwenden

+0

Ironischerweise, obwohl dies die bevorzugte Verwendung gegenüber "\ n" oder "\ r \ n" ist (zumindest in DOT NET), beantwortet es nicht die ursprüngliche Frage. – mickeyf

Verwandte Themen